使用XMLTextReader读取XML时获取空格

时间:2014-07-16 11:15:35

标签: c# .net xml-parsing xmltextreader

我正在使用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?

1 个答案:

答案 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\"]

希望这有帮助