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.

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>
4

3 に答える 3

59

XML ファイルを XDocument にロードしようとしているようですが、そのためには呼び出す必要がありXDocument.Load("C:\\temp\\contacts.xml");ます。XML ファイルをコンストラクターに渡すことはできません。

で XML の文字列を読み込むこともできますXDocument.Parse(stringXml);

最初の行を次のように変更します。

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 コンストラクターを参照してください。

于 2013-09-04T04:59:51.327 に答える
0
XDocument xdoc=XDocument.load(path)
于 2013-11-24T12:46:25.170 に答える