29

我正在尝试打开这样的 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>
4

3 回答 3

59

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

您还可以使用XDocument.Parse(stringXml);.

将第一行更改为:

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

它会起作用。

作为参考,构造函数有 4 个重载XDocument

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

您可能一直在考虑第三个 ( XDocument(XDocument)),但要使用那个,您必须编写:

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

var doc = XDocument.Load("c:\\temp\\contacts.xml");什么时候足够了,这将是多余的。

有关详细信息,请参阅XDocument 构造函数

于 2013-09-04T04:59:51.327 回答
4

使用 XDocument.Parse(stringxml)

于 2017-02-09T14:24:08.450 回答
0
XDocument xdoc=XDocument.load(path)
于 2013-11-24T12:46:25.170 回答