NullException XML解析

时间:2013-09-29 14:59:23

标签: c# xml xml-parsing

我在使用C#解析XML时遇到问题,我的XML文件如下所示:

<xml>
    <category>books</category>
    <id>1</id>
    <title>lemony</title>
    <sub>
        <title>lemonyauthor</title>
    </sub>
</xml>
<xml>
    <category>comics</category>
    <id>2</id>
    <sub>
        <title>okauthor</title>
    </sub>
</xml>

正如您所看到的,有时返回“XML”中的标题,有时不会。

我在C#中的代码解析它看起来像:

string _Title;

foreach (XElement str in xmlDoc.Descendants("xml"))
{
    _Title = "";

        if (str.Element("title").Value != null)
            _Title = str.Element("title").Value;

        foreach (XElement cha in str.Descendants("sub"))
        {
            if (_Title.Length < 1 && cha.Element("Title").Value != null)
                    _Title = cha.Element("title").Value;
        }
}

如何让行if (str.Element("category").Value != null)不再返回NullException

正在使用try&amp; catch唯一的方法?

2 个答案:

答案 0 :(得分:3)

如果您期望str.Element("title")(这是异常的最可能原因)为null(无论多么偶然),那么您应该对此进行测试:

if (str.Element("title") != null)
{
    // your existing code.
}

如果您不期望它为null并且它确实是一个特殊情况,那么尝试catch是阻止该方法崩溃的唯一其他方法。

答案 1 :(得分:2)

改变这个:

if (str.Element("title").Value != null)
    _Title = str.Element("title").Value;

到此:

var titleElement = str.Element("title");
if (titleElement != null)
    _Title = titleElement.Value;