【发布时间】:2013-01-26 06:45:59
【问题描述】:
我发现确定解析某些 XML 的最佳方法令人费解。似乎它们有很多可能的方法,但没有一种方法能真正吸引我。
我目前的尝试看起来像这样:
XElement xelement = XElement.Parse(xmlText);
var name = xelement.Element("Employee").Attribute("name").Value;
所以,这行得通。但如果缺少“Employee”元素或“name”属性,则会引发异常。我不想抛出异常。
探索一些examples available online,我看到这样的代码:
XElement xelement = XElement.Load("..\\..\\Employees.xml");
IEnumerable<XElement> employees = xelement.Elements();
Console.WriteLine("List of all Employee Names :");
foreach (var employee in employees)
{
Console.WriteLine(employee.Element("Name").Value);
}
这似乎会遇到完全相同的问题。如果“Name”元素不存在,Element() 返回null,调用Value 属性时出错。
我需要一些块,比如上面的第一个代码 sn-p。有没有一种简单的方法可以让它工作并且在某些数据丢失时不抛出异常?
【问题讨论】:
-
你可以使用 XPATH。缺少元素没有问题,我个人认为这是一个巨大的优势。
/Employee/@name/text()将选择名称,如果未找到则为 null。但这不是 XElement 也不是 Xlinq。
标签: c# .net xml linq-to-xml