0

我在 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)返回 a NullException

使用try&catch是唯一的方法吗?

4

2 回答 2

3

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

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

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

于 2013-09-29T15:02:32.567 回答
2

改变这个:

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

对此:

var titleElement = str.Element("title");
if (titleElement != null)
    _Title = titleElement.Value;
于 2013-09-29T15:03:21.943 回答