0

我正在 C#.net 中使用 XMLTextReader 读取 XML。XML的结构如下:

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

在 reding 属性之后,我将控制权转移到 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;

现在,如果您只是将 element 作为标签的名称,而不是 element1、element2、...,您可以遍历所有元素标签:

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 回答