我在使用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
唯一的方法?
答案 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;