2016-04-06 4 views
0

私はXmlを取得しています。私は名前で単一の要素を取得したいと考えています。私はSelectSingelNodeメソッドを使用しようとしました。これは、MSDNはあなたがするよう指示するものである:私はXMLを読み取るために、常にXmlDocumentといるXmlNodeListを使用しています現時点ではWindows UniversalアプリケーションにXmlNode.SelectSingleNodeメソッドがないのはなぜですか?

https://msdn.microsoft.com/en-us/library/system.xml.xmlnode.selectsinglenode%28v=vs.110%29.aspx

。しかし、これは私に木全体を与える。

string path = "xml_path.xml"; 
FileStream reader = new FileStream(path, FileMode.Open, FileAccess.Read); 
XmlDocument xdoc = new XmlDocument(); 
xdoc.Load(reader); 
XmlNodeList node = xdoc.GetElementsByName("name"); 

win-universal-appでSelectSingeNodeメソッドが見つかりません。私はVisual Studio 2015を使用しています。なぜこれを削除しましたか?名前で単一の要素を取得する別の方法はありますか?あなただけの1次回()、または行うことができますので

+0

いるXmlNodeListは可算です。 FirstorDefaultを使用するか、特定の名前要素をフィルタリングして選択する場所を使用します – Viru

+0

XmlNodeListの.FirstOrDefaultという名前のメソッドはありません。名前で選択できない最初のChildNodeを返すFirstChildだけです。 – Thomas

答えて

1

あなたはあなたの問題を解決するためにLINQクエリを使用する前にいるXmlNodeListが可算であるが、あなたはそれをキャストする必要がありますので、それはジェネリックIEnumerableを実装していません

XmlNode node = xdoc.GetElementsByTagName("name").Cast<XmlNode>().First(); 
XmlNode node = xdoc.GetElementsByTagName("name").Cast<XmlNode>().FirstorDefault(); 
XmlNode node = xdoc.GetElementsByTagName("name").Cast<XmlNode>().Where(somecondition).FirstorDefault(); 
+0

GetElementsByName( "name")は私にとっては機能しません。 GetElementsByTagNameです。 「XmlNodeListに 'Cast'の定義が含まれていないため、 'XmlNodeList'型の最初の引数を受け入れることができませんでした(使用するディレクティブまたはアセンブリ参照がありませんか?) " – Thomas

+0

@トーマスは 'using System.Linq;'を持っていましたか? – har07

+0

私はSystem.Linqの代わりにSystem.Xml.Linqを使用していました。申し訳ありませんが、ありがとうございます! – Thomas

関連する問題