检查XML元素是否存在

31 c# xml

有人如何验证XML文件中是否存在特定元素?假设我有一个不断变化的XML文件,我需要在读取/解析它之前验证每个元素是否存在.

qui*_*qui 54

if(doc.SelectSingleNode("//mynode")==null)....
Run Code Online (Sandbox Code Playgroud)

应该这样做(显然doc是你的XmlDocument对象)

或者,您可以使用XSD并对其进行验证

  • @Qsiris"//"是XPath,意味着选择任何元素mynode,无论它在哪里 (6认同)
  • "//"代表什么? (3认同)

san*_*gam 5

您可以遍历每个节点,查看是否存在节点。

doc.Load(xmlPath);
        XmlNodeList node = doc.SelectNodes("//Nodes/Node");
        foreach (XmlNode chNode in node)
        {
            try{
            if (chNode["innerNode"]==null)
                return true; //node exists
            //if ... check for any other nodes you need to
            }catch(Exception e){return false; //some node doesn't exists.}
        }
Run Code Online (Sandbox Code Playgroud)

您遍历Nodes(假设它是根节点)下的每个Node元素,并检查是否存在名为“ innerNode”的节点(如果需要,添加其他节点)。try..catch是因为我怀疑如果节点不存在,这会引发流行的“未设置对象引用”错误。


小智 5

//如果问题是“只是”在您 // 提取值之前验证该元素存在于 xml 文件中,您可以这样做

XmlNodeList YOURTEMPVARIABLE = doc.GetElementsByTagName("YOUR_ELEMENTNAME");

        if (YOURTEMPVARIABLE.Count > 0 )
        {
            doctype = YOURTEMPVARIABLE[0].InnerXml;

        }
        else
        {
            doctype = "";
        }
Run Code Online (Sandbox Code Playgroud)