正在解析缺少预期子节点的 XML
Parsing XML that is missing expected child nodes
我正在使用 LINQ 解析一个 XML 片段到 XML,我发现我正在 selecting 的节点之一缺少我期望的子节点。
例子XML
<CustomerList>
<Customer>
<LastName>Smith</LastName>
<FirstName>Todd</FirstName>
</Customer>
<Customer>
<LastName>Jones</LastName>
<FirstName>Fred</FirstName>
</Customer>
<Customer>Tom Jones</Customer> <!-- Missing child nodes -->
</CustomerList>
当我尝试提取 LastName
和 FirstName
值时,出现错误 Object reference not set to an instance of an object.
使用 LINQ
解析 XML
XDocument xml = XDocument.Parse(xmlResponse);
List<CustomerModel> nodeList = xml.Descendants("CustomerList")
.Descendants("Customer")
.Select(x => new CustomerModel
{
LastName = x.Element("LastName").Value,
FirstName = x.Element("FirstName").Value,
}).ToList<CustomerModel>();
在 <Customer>
节点没有 <LastName>
和 <FirstName>
节点的情况下,我该如何跳过它们或者更好,甚至 select第一名?
我的建议是:
XDocument xml = XDocument.Parse(xmlResponse);
List<CustomerModel> nodeList = xml.Descendants("CustomerList")
.Descendants("Customer")
.Where(x => x.Element("LastName") != null && x.Element("FirstName") != null)
.Select(x => new CustomerModel
{
LastName = x.Element("LastName").Value,
FirstName = x.Element("FirstName").Value,
}).ToList<CustomerModel>();
我正在使用 LINQ 解析一个 XML 片段到 XML,我发现我正在 selecting 的节点之一缺少我期望的子节点。
例子XML
<CustomerList>
<Customer>
<LastName>Smith</LastName>
<FirstName>Todd</FirstName>
</Customer>
<Customer>
<LastName>Jones</LastName>
<FirstName>Fred</FirstName>
</Customer>
<Customer>Tom Jones</Customer> <!-- Missing child nodes -->
</CustomerList>
当我尝试提取 LastName
和 FirstName
值时,出现错误 Object reference not set to an instance of an object.
使用 LINQ
解析 XMLXDocument xml = XDocument.Parse(xmlResponse);
List<CustomerModel> nodeList = xml.Descendants("CustomerList")
.Descendants("Customer")
.Select(x => new CustomerModel
{
LastName = x.Element("LastName").Value,
FirstName = x.Element("FirstName").Value,
}).ToList<CustomerModel>();
在 <Customer>
节点没有 <LastName>
和 <FirstName>
节点的情况下,我该如何跳过它们或者更好,甚至 select第一名?
我的建议是:
XDocument xml = XDocument.Parse(xmlResponse);
List<CustomerModel> nodeList = xml.Descendants("CustomerList")
.Descendants("Customer")
.Where(x => x.Element("LastName") != null && x.Element("FirstName") != null)
.Select(x => new CustomerModel
{
LastName = x.Element("LastName").Value,
FirstName = x.Element("FirstName").Value,
}).ToList<CustomerModel>();