代码之家  ›  专栏  ›  技术社区  ›  Geeth

读取xml文件并访问可选节点

  •  0
  • Geeth  · 技术社区  · 16 年前

    我使用以下代码从xml文件中检索数据。它工作得很好。

    问题:如果节点不可用,则会产生问题。如何检查节点的可用性。

    例如:有些记录没有描述,因为它显示对象引用没有设置为对象的实例。错误。

    XmlDocument doc = new XmlDocument();
    doc.Load("C:\\Books.xml");
    XmlElement root = doc.DocumentElement;
    XmlNodeList nodes = root.SelectNodes("/NewDataSet/booksdetail");
    
    foreach (XmlNode node in nodes)
    {
        string pages = node["pages"].InnerText;
        string description = node["Description"].InnerText; // Error
    } 
    

    错误:对象引用未设置为对象的实例。

    其他选项: 工作

            string pages = "0";
            string description = "";
    
            foreach (XmlNode node in nodes)
            {
                foreach(XmlNode childNode in node)
                {
                    switch (childNode.Name.ToString())
                    {
                        case "pages":
                            pages = node["pages"].InnerText;
                            break;
    
                        case "Description":
                            description = node["Description"].InnerText;
                            break;
                    }
                }
    
    2 回复  |  直到 16 年前
        1
  •  5
  •   Alex Reitbort    16 年前
        XmlDocument doc = new XmlDocument();
        doc.Load("C:\\Books.xml");
        XmlElement root = doc.DocumentElement;
        XmlNodeList nodes = root.SelectNodes("/NewDataSet/booksdetail");
    
        foreach (XmlNode node in nodes)
        {
            string pages = node["pages"].InnerText;             
            string description = null;
            if(node["Description"]!= null)
            {
               description = node["Description"].InnerText;
            }
        } 
    
        2
  •  0
  •   Kamran Khan    16 年前

    检查 node 对于 null 在检索值之前。