XML错误:非空白字符不能添加到内容中。

34

我正在尝试这样打开一个 xmldocument:

var doc = new XDocument("c:\\temp\\contacts.xml");
var reader = doc.CreateReader();
var namespaceManager = new XmlNamespaceManager(reader.NameTable);
namespaceManager.AddNamespace("g", g.NamespaceName);
var node = doc.XPathSelectElement("/Contacts/Contact/g:Name[text()='Patrick Hines']", namespaceManager);
node.Value = "new name Richard";
doc.Save("c:\\temp\\newcontacts.xml");
我在第一行返回了一个错误:

我在第一行返回了一个错误:

Non whitespace characters cannot be added to content.

xml文件的外观如下:

<?xml version="1.0" encoding="utf-8"?>
<Contacts xmlns:g="http://something.com">
  <Contact>
    <g:Name>Patrick Hines</g:Name>
    <Phone>206-555-0144</Phone>
    <Address>
      <street>this street</street>
    </Address>
  </Contact>
</Contacts>
3个回答

66

看起来你正在尝试将一个XML文件加载到XDocument中,但为此你需要调用XDocument.Load("C:\\temp\\contacts.xml"); - 你不能将XML文件传递到构造函数中。

你也可以使用XDocument.Parse(stringXml);加载一个XML字符串。

将你的第一行改为:

var doc = XDocument.Load("c:\\temp\\contacts.xml");

它会正常工作。

参考文献中,XDocument 构造函数有 4 个重载:

XDocument();
XDocument(Object[]);
XDocument(XDocument);
XDocument(XDeclaration, Object[]);

你可能在考虑第三个选项 (XDocument(XDocument)),但要使用它,你需要编写如下代码:

var doc = new XDocument(XDocument.Load("c:\\temp\\contacts.xml"));
< p>当var doc = XDocument.Load("c:\\temp\\contacts.xml");已经足够时,以下哪些内容是冗余的。

有关详细信息,请参见XDocument Constructor


5

使用

XDocument.Parse(stringxml)

0
XDocument xdoc=XDocument.load(path)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接