检查xpath中是否存在Xml标记。

时间:2012-12-11 09:49:44

标签: c# xml exception xpath

我试图使用xpath从Xml文件中获取值。这是我的代码:

XElement docQuote = XElement.Parse(Financial);
string result= docQuote.XPathSelectElement("//ns:Quote",nsmgr).ToString(SaveOptions.DisableFormatting);

当XML文件中存在Quote Xml节点并在Quote标记之间返回值时,此工作正常。但是,它生成的XMl文件中不存在Quote xml标记和异常。

Object reference not set to an instance of an object.

我试图检查NULL如下:

if(docQuote.XPathSelectElement("//ns:Quote",nsmgr) != null

if(docQuote.XPathSelectElement("//ns:Quote",nsmgr) != null).value != null)

但是当null时它不会避免执行。

请帮我避免在Xml标签不存在时执行。

2 个答案:

答案 0 :(得分:2)

也许boolean() XPATH函数在这里有帮助:

boolean(//*[name()='Quote'])

如果元素引用存在,boolean(//*[name()='Quote'])应返回true,否则返回false。

XElement docQuote = XElement.Parse(Financial);
string result= docQuote.XPathSelectElement("boolean(//*[name()='Quote'])",nsmgr).ToString(SaveOptions.DisableFormatting);

答案 1 :(得分:-1)

尝试

 XElement docQuote = XElement.Parse(Financial);
   if(docQuote != null && docQuote.XPathSelectElement("//ns:Quote",nsmgr) != null)
   {
    string result=   docQuote.XPathSelectElement("//ns:Quote",nsmgr).ToString(SaveOptions.DisableFormatting);
   }