【发布时间】:2014-04-10 10:36:44
【问题描述】:
有没有更好的方法来做这样的事情:
private XElement GetSafeElem(XElement elem, string key)
{
XElement safeElem = elem.Element(key);
return safeElem ?? new XElement(key);
}
private string GetAttributeValue(XAttribute attrib)
{
return attrib == null ? "N/A" : attrib.Value;
}
var elem = GetSafeElem(elem, "hdhdhddh");
string foo = GetAttributeValue(e.Attribute("fkfkf"));
//attribute now has a fallback value
在解析 XML 文档中的元素/属性值时?在某些情况下,执行以下操作时可能找不到该元素:
string foo (string)elem.Element("fooelement").Attribute("fooattribute").Value
因此会发生对象引用错误(假设未找到元素/属性)。尝试访问元素值时相同
【问题讨论】:
-
我知道这并没有回答这个问题,但您可能会对一种名为 XPATH 的技术感兴趣,它可以非常优雅地处理此类问题(尽管它也有自己的问题)
-
或者,您可以在解决方案中创建一个 VB.NET 项目,仅用于托管解析 XML 的代码。在VB中,可以写
foo = elem.<fooelement1>.<fooelement2>.<fooelement3>.@fooattribute,如果没有找到链中的任何节点,它将返回一个空字符串。
标签: c# xml error-handling linq-to-xml