我有以下示例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
不是整个元素)
答案 0 :(得分:0)
在您的示例文档中,唯一的table
元素有两个名为displayName
和dbName
的属性,我没有看到任何dbColumn
或type
属性table
元素。如果您想访问field
元素,请使用root.Descendants("field")
代替root.Element("table")
。