[英]Selecting multiple XML node attributes with LINQ.. why is everything after the first attribute null?
我有以下示例XML:
<?xml version="1.0" encoding="utf-8" ?>
<queryableData>
<table displayName="Shipments" dbName="Quotes">
<foreignKey column="CustomerId" references="CustomerRegistration"/>
<foreignKey column="QuoteStatusId" references="QuoteStatus"/>
<fields>
<field displayName="Quote Charge" dbColumn="QuoteCharge" type="Number"/>
<field displayName="Total Weight" dbColumn="TotalWeight" type="Number"/>
</fields>
</table>
</queryableData>
并且我正在尝试使用field
节点的内容创建一个匿名对象。 这是我的LINQ代码:
XElement root = XElement.Load("queryable.xml");
var elem = from el in root.Elements("table")
select new
{
DisplayName = el.Attribute("displayName").Value,
Column = el.Attribute("dbColumn").Value,
DataType = el.Attribute("type").Value
};
如果我仅指定“ DisplayName”属性,则可以正常工作。 其他两个始终为null,因此尝试读取Value属性将引发NullReferenceException。
从元素中获取我需要的所有三个属性的正确方法是什么? 我认为我走了正确的路,但是查询中缺少了一些东西(在我看来, el
并不是整个元素)
编辑:没关系,我是个白痴。 我正在寻找一个元素,并查询另一个!
在示例文档中,唯一的table
元素具有两个名为displayName
和dbName
属性,我在该table
元素dbColumn
不到任何dbColumn
或type
属性。 如果要访问field
元素,请使用root.Descendants("field")
代替root.Element("table")
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.