【问题标题】:Check xml node is exist or not?检查xml节点是否存在?
【发布时间】:2012-08-17 11:27:19
【问题描述】:

我想检查*.xml 文件中是否存在给定节点。 我试试:

 string language = node.SelectSingleNode("language") != null ? (node.SelectSingleNode("language").Value == "en" ? "en-US" : "en-US") : "en-US";

但我认为它只检查节点值。在某些xml 文件中我没有名为language 的节点,所以它给出了Null Reference Ex..。 如何检查*.xml文件中是否存在给定节点?谢谢。

【问题讨论】:

  • 结果总是“en-US”,所以string language = "en-US" 也一样!
  • 我能看到代码抛出 NullReferenceException 的唯一方法是node 本身为空。请您确认这是您的确切代码,该节点不为空,并且肯定是这行代码引发了异常吗?

标签: c# asp.net xml


【解决方案1】:

某事是null。您正在检查 null 的选定“语言”节点,node 本身 null 也是如此?

将代码分散到更多行,嵌套的?: 代码不容易理解,您不得不重复默认值和函数调用。

使用变量,例如为node.SelectSingleNode("language") 使用一个变量,这样您就不会这样做两次。这将帮助您找到错误。

string language = "en-US"; //default
if(node!=null)
{
  var langNode = node.SelectSingleNode("language");
  if(langNode!=null)
  {
    //now look at langNode.Value, and overwrite language variable, maybe you wanted:
    if(langNode.Value != "en")
    {
       language = langNode.Value;
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    相关资源
    最近更新 更多