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

时间:2010-09-01 05:47:32

标签: c# xml

我使用以下代码从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 个答案:

答案 0 :(得分:5)

    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;
        }
    } 

答案 1 :(得分:0)

在检索值之前,检查node null