在 XDocument 中搜索 XML 节点时避免 Try n Catch
Avoid Try n Catch when searching for XML nodes in XDocument
这是一种检查 特定节点 是否存在于 XDocument
文件中的方法。
显然根据一些文档它可能会遇到一些NullExceptions。 (第 5,6 行)
你推荐什么方式,如何更改这段代码以避免使用Try/Catch并且没有得到异常?
var xContents = xDocument.Root.Descendants("Content");
if (xContents.Any())
{
doesIncludeThat =
xContents.Any(e => e.HasAttributes && e.Name == "Content"
&& e.Attribute("Include").Value == @"Happy New Year");
...}}}
如果不使用 e.Attribute(name).Value
将给出 NullReferenceException,您可以执行以下操作之一,在这种情况下两者都会 return null:
e.Attribute(name)?.Value
或
(string)e.Attribute(name)
后者使用 XAttribute 中定义的转换(强制转换)运算符之一,如果属性不存在,它也 return null。
这是一种检查 特定节点 是否存在于 XDocument
文件中的方法。
显然根据一些文档它可能会遇到一些NullExceptions。 (第 5,6 行)
你推荐什么方式,如何更改这段代码以避免使用Try/Catch并且没有得到异常?
var xContents = xDocument.Root.Descendants("Content");
if (xContents.Any())
{
doesIncludeThat =
xContents.Any(e => e.HasAttributes && e.Name == "Content"
&& e.Attribute("Include").Value == @"Happy New Year");
...}}}
如果不使用 e.Attribute(name).Value
将给出 NullReferenceException,您可以执行以下操作之一,在这种情况下两者都会 return null:
e.Attribute(name)?.Value
或
(string)e.Attribute(name)
后者使用 XAttribute 中定义的转换(强制转换)运算符之一,如果属性不存在,它也 return null。