我正在尝试打开这样的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.
xmlfile看起来像这样:
<?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>
答案 0 :(得分:47)
看起来您正在尝试将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"));
当var doc = XDocument.Load("c:\\temp\\contacts.xml");
足够时,这将是多余的。
有关详细信息,请参阅XDocument Constructor。
答案 1 :(得分:0)
XDocument xdoc=XDocument.load(path)
答案 2 :(得分:0)
使用XDocument.Parse(stringxml)