【发布时间】:2011-04-01 14:37:22
【问题描述】:
我必须分析当前项目中的大量 XML 文件。
我将 XML 文件作为 string 对象获取。
我编写了一个方法来检查 XML 字符串是否包含任何数据。
private bool ContainsXmlData(string xmlString)
{ if (string.IsNullOrEmpty(xmlString)) 返回假; XmlDocument Doc = new XmlDocument(); 尝试 { Doc.LoadXml(xmlString); } 捕捉(XmlException) { 返回假; } 如果(!Doc.DocumentElement.HasChildNodes) 返回假; 返回真; }
有没有办法更快地执行此检查?是否可以在不使用XmlDocument 的情况下进行检查?
编辑
我用XPathDocument 和XPathNavigator 做了一个新方法。感谢 Mitch Wheat 和 Kragen :)
private bool ContainsXmlData(string xmlString)
{ if (string.IsNullOrEmpty(xmlString)) 返回假; 尝试 { StringReader Reader = new StringReader(xmlString); XPathDocument doc = new XPathDocument(Reader); XPathNavigator 导航 = doc.CreateNavigator(); XPathNodeIterator iter = nav.Select("/"); 返回(iter.Count > 0)?真假; } 捕捉(XmlException) { 返回假; } }
【问题讨论】:
-
您的
xmlString是否始终具有相同的根节点?例如,<myRoot></myRoot>?或者根可以不同吗? -
@DHoerster 可以不一样