C#XmlElement:SelectSingleNode为空字符串返回null?
发布时间:2020-12-16 03:44:18 所属栏目:百科 来源:网络整理
导读:我是C#的新手,刚开始使用XmlElement及其SelectSingleNode方法.在我的 XML文件中,有一个标签可能有一个值(即 tag值 / tag)或为空(即 tag / tag).如果它为空,则SelectSingleNode返回null. 我目前正在使用以下代码来捕获标记的值: XmlElement elem = ....strin
我是C#的新手,刚开始使用XmlElement及其SelectSingleNode方法.在我的
XML文件中,有一个标签可能有一个值(即< tag>值< / tag>)或为空(即< tag>< / tag>).如果它为空,则SelectSingleNode返回null.
我目前正在使用以下代码来捕获标记的值: XmlElement elem = .... string s = elem.SelectSingleNode("somepath").Value; 此代码显然会引发空标记的异常.但是,对我来说,空标记是一个有效值,我希望我的字符串的值为“”. 用try … catch包含对SelectSingleNode的每次调用似乎是代码的巨大浪费(我有许多字段可能是空的),我确信有更好的方法来实现这一点. 推荐的方法是什么? 编辑: 根据请求,示例XML代码将是: <Elements> <Element> <Name>Value</Name> <Type>Value</Type> <-- may be empty <Color>Value</Color> </Element> <Element> <Name>Value</Name> <Type>Value</Type> <Color>Value</Color> </Element> </Elements> CS代码: XmlDocument doc = new XmlDocument(); doc.Load("name.xml"); foreach (XmlElement elem in doc.SelectNodes("Elements/Element")) { myvalue = elem.SelectSingleNode("Type/text()").Value; } 解决方法
您的示例代码:
myvalue = elem.SelectSingleNode("Type/text()").Value; 是问题所在.你在那里使用的XPath表达式并不意味着“给我元素类型的文本”.它意味着“给我所有元素类型的子文本节点”.并且空元素没有任何子文本节点(XPath文档模型中的文本节点不能为空).如果要获取节点的文本值,则应使用: myvalue = elem.SelectSingleNode("Type").InnerText; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |