0

C#.net で XMLTextReader を使用して XML を読み取っています。XML の構造は次のようになります。

<root attr1="" attr2="">
    <element1>some value</element1>
    <element2>some value</element2>
</root>

属性を変更した後、制御を element1 に移します。コードは次のとおりです。

reader.MoveToElement()
if(reader.ReadToDecedent("element1"))
{
    string val= reader.ReadInnerXML();
}

これを読んだ後、読者は空白を示します。ここでも element1 に移動し、そこから ReadToDecendent を使用して element2 に移動します。同じフローに従わなければならないので、MoveToContent() は使用できません。

では、読者の内部テキストの後に element1 に移動するにはどうすればよいでしょうか?

4

1 に答える 1

0

XPathDocumentおよび関連するクラスの使用を検討しましたか? 次のようになります。

var _xml = "<xml><elements><element1>some text</element1><element2>some more text</element2></elements></xml>";
var xPathDoc = new XPathDocument(XmlReader.Create(new StringReader(_xml)));
var nav = xPathDoc.CreateNavigator();
var node = nav.SelectSingleNode("//element1");  // with xpath exp you can pick out specific tags
var innerText = node.Value;

タグの名前として element1、element2、... の代わりに element がある場合は、すべての要素タグを反復処理できます。

var nodes = nav.Select("//element");  // selects all element tags
while(nodes.MoveNext()){
    //do something
}

これはおそらく、xml ドキュメントを照会するより簡単な方法です。さらに、特定の属性を持つタグが必要な場合、xpath 式は次のようになります。//element[attr1=\"atrribute_value\"]

お役に立てれば

于 2014-07-17T04:10:39.497 に答える