我正在使用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?
答案 0 :(得分: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,...您可以遍历所有元素标记:
var nodes = nav.Select("//element"); // selects all element tags
while(nodes.MoveNext()){
//do something
}
这可能是查询xml doc的一种更简单的方法。另外,如果您想要具有特定属性的标记,则xpath表达式将为//element[attr1=\"atrribute_value\"]
希望这有帮助