1

xmlファイルを解析しようとしています

私のコードは次のようになります:

 string path2 = "xmlFile.xml";
 XmlDocument xDoc = new XmlDocument();
 xDoc.Load(path2);
 XmlNodeList xnList = xDoc.DocumentElement["feed"].SelectNodes("entry");

しかし、ノードのリストを取得できないようです。「'new'キーワードを使用してオブジェクトインスタンスを作成してください」というエラーメッセージが表示されます。'SelectNodes( "entry")'にあるようですこのコードは、ローカルファイルではなくrssフィードからxmlをロードしたときに機能しました。私が間違っていることを教えてもらえますか?

私のxmlは次のようになります:

<?xml version="1.0"?>
 <feed xmlns:media="http://search.yahoo.com/mrss/" xmlns:gr="http://www.google.com/schemas/reader/atom/" xmlns:idx="urn:atom-extension:indexing" xmlns="http://www.w3.org/2005/Atom" idx:index="no" gr:dir="ltr">
  <entry gr:crawl-timestamp-msec="1318667375230">
   <title type="html">Title 1 text</title>
   <summary>summary 1 text text text</summary>
  </entry>
  <entry gr:crawl-timestamp-msec="1318667375230">
   <title type="html">title 2 text</title>
   <summary>summary 2 text text text</summary>
  </entry>
 </feed>
4

2 に答える 2

1

名前空間を考慮に入れます。

XmlNamespaceManager mgr = new XmlNamespaceManager(XDoc.NameTable);
mgr.AddNamespace("atom", "http://www.w3.org/2005/Atom");
XmlNodeList xnList = xDoc.SelectNodes("//atom:entry", mgr);
于 2011-10-23T16:26:35.290 に答える
1

これは、XPathに関する最も悪名高いFAQです。デフォルトの名前空間にある要素の名前を参照しています。

簡単な答え:「XPathデフォルトの名前空間」を検索して、問題を理解してください。

次に、インスタンスを使用してXmlNamespaceManager、プレフィックス(たとえば"x")とデフォルトの名前空間(この場合"http://www.w3.org/2005/Atom")の間に関連付けを追加します。

最後に、 XPath式のanyNameをに置き換えます。x:Name

于 2011-10-23T16:30:34.383 に答える