如何测试一个XML元素里面是否有文本元素?

问题描述:

我想知道我怎么能测试休耕情况:如何测试一个XML元素里面是否有文本元素?

<foo> 
    <bla1>xxx</bla1> 
    <bla2>yyy</bla2> 
    <bla3>zzz</bla3> 
</foo> 

在while(reader.Read()),我在XmlNodeType.Element下降,当我在foo和BLA1是, bla2,bla3 ...在xxx,yyy,zzz中放入.TextElement时。但是,我可以测试bla的内部是否有文本值吗?

非常感谢

佩德罗Dusso

不,你不能,只要你使用一个XmlReader

XmlReader类通过XML层面实现了只向前游标。因此,您只能在当前位置找到的XML节点上操作。

在你的情况下,这意味着你将无法在没有先迭代它们的情况下检查“bla”节点的内容。

+0

你是对的,但我实际上使用XmlTextReader,对不起,我没有写过。 – 2010-10-03 21:43:43

+0

XmlTextReader的原理相同。仅前向光标将只允许您检查当前正在访问的节点。如果您想查询XML层次结构,则必须将其加载到内存DOM结构中,例如XmlDocument类或XDocument类。 – 2010-10-04 12:47:38

+0

Yeap ...我明白了。我将不得不考虑它。我们应该处理一个700MB的XML文件,所以我无法将它加载到内存中......非常感谢! – 2010-10-05 21:14:24

如果您正在使用一个XmlTextReader您可以使用属性IsEmptyElement

+0

这实际上不工作......当它成为真时,IsEmptyElement只适用于。无论如何感谢... – 2010-10-03 21:41:51

reader.HasValue有什么问题? (或string.IsNullOrEmpty(reader.Value))?