私はこのような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>
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[]);
_
あなたは3番目のもの(XDocument(XDocument)
)を考えていたかもしれませんが、それを使用するにはあなたは書く必要があります:
_var doc = new XDocument(XDocument.Load("c:\\temp\\contacts.xml"));
_
var doc = XDocument.Load("c:\\temp\\contacts.xml");
で十分な場合、これは冗長になります。
詳細な説明については XDocumentコンストラクタ を参照してください。
XDocument.Parse(string xml)を使用します
XDocument xdoc=XDocument.load(path)