WPF – XMLTextReaderを使用してXML文書から値を検索する

wpf xml xmltextreader xpathdocument

もう1つのWPFの質問ですが、これは単なる一般的な.NETです。 URLから取得したxmlドキュメントがあります。

ドキュメントから複数の値(天気データ、場所、その他の文字列)を取得します。

XmlTextReaderを使用すると、自分のメソッドを呼び出して値を取り出すことができます。 最初にxmlノードを検索して値(XMLTextReaderオブジェクト)を取得するためのメソッドを渡すと、正しいデータが返されますが、その後XMLTextReaderは無効になります。 なぜそれがゼロになるのかわからない。 だから私は以下のFindTagsでこのUGLYコードをやらなければならない…​ 方法。 xtr(XMLTextreader)をfindメソッドに渡し続けたいだけです。 これは読者の本性ですか? 毎回URLにアクセスする必要もありません…​ それも間違っているようです。

助けて.. これはすべて間違って感じます。

ありがとう。

GetWeatherFeed( "97229"、 "// weather // loc // dnam"、 "// weather // cc // tmp"、 "/ weather / cc / icon");

WeatherFeedメソッドを取得(スニップ)

System.Xml.XmlTextReader xtr = new System.Xml.XmlTextReader(xmを元に戻すURL); System.Collections.Hashtable ht = new System.Collections.Hashtable();

ht = FindTagsUsingXPthNaviatorAndXPathDocumentNew(xtr、location、temperature、iconid); lblLocation.Content = ht ["Location"]。ToString(); lblWeatherCondition.Content = ht ["天気予報"]。ToString();

public System.Collections.Hashtable FindTagsUsingXPthNaviatorAndXPathDocumentNew(System.Xml.XmlTextReader xtr、文字列nodeToLocate1、文字列nodeToLocate2、文字列nodeToLocate3){System.Xml.XPath.XPathDocument xpDoc = new System.Xml.X(XPath)= new System.Xml.X(ドキュメントパス) System.Xml.XPath.XPathNavigator xpNav = xpDoc.CreateNavigator(); System.Xml.XPath.XPathExpression xpExpression = xpNav.Compile(nodeToLocate1);

System.Xml.XPath.XPathNodeIterator xpIter = xpNav.Select(xpExpression); System.Collections.Hashtable ht = new System.Collections.Hashtable();

while(xpIter.MoveNext()){ht.Add( "Location"、xpIter.Current.Value); }

xpExpression = xpNav.Compile(nodeToLocate2);

xpIter = xpNav.Select(xpExpression); while(xpIter.MoveNext()){ht.Add( "Weather"、xpIter.Current.Value); }

xpExpression = xpNav.Compile(nodeToLocate3);

xpIter = xpNav.Select(xpExpression); while(xpIter.MoveNext()){ht.Add( "Icon"、xpIter.Current.Value); }

htを返します。 }

  0  0


ベストアンサー

これが私がしたことです…​ 素晴らしい答えです。

System.Xml.XmlTextReader xtr = new System.Xml.XmlTextReader(my xml url); System.Xml.XPath.XPathDocument xdoc = new System.Xml.XPath.XPathDocument(xtr);

lblLocation.Content = getXmlNodeValue(xdoc、location); lblWeatherCondition.Content = getXmlNodeValue(xdoc、temperature);

1


XMLTextReaderはSAXリーダーではありませんか? ファイルを再度読み込むためにストリームを巻き戻す必要はありませんか。

0


XmlTextReaderを先頭にリセットすることはできません。 最初にコンテンツをダウンロードしてから、複数のXmlTextReadersを使用します(必要な場合)。

ダウンロードしている文書が小さい場合は、XmlDocument(.NET 3.5を使用している場合はXDocument)を使用します。

0


タイトルとURLをコピーしました