我有一个xml文档,我想从
获取属性这是XML:
<Translations>
<Product Name="Room" ID="16">
<Terms>
<Term Generic="Brand" Product="Sub Category" />
<Term Generic="Range" Product="Brand" />
</Terms>
</Product>
<Product Name="House"" ID="29">
<Terms>
<Term Generic="Category" Product="Product Brand" />
<Term Generic="Brand" Product="Category Description" />
<Term Generic="Range" Product="Group Description" />
<Term Generic="Product" Product="Product Description" />
</Terms>
</Product>
</Translations>
这是我目前的Linq查询
public static string clsTranslationTesting(string GenericTerm, int ProductID)
{
const string xmlFilePath = "C:\\Dev\\XMLTrial\\XMLFile1.xml";
var xmlDocument = XDocument.Load(xmlFilePath);
var genericValue =
from gen in xmlDocument.Descendants("Product")
where gen.Attribute("ID").Value == ProductID.ToString()
select gen.Value.ToString();
}
我遇到的错误是当我将数据传递给方法时,该方法成功地将xml从文件加载到xmlDocument变量。但是,当它执行查询时,它返回一个值null。我想获取ID值。
答案 0 :(得分:0)
我对你的问题有点遗失,但这是我的尝试。
首先,您需要改变&#34;客户&#34;到&#34;产品&#34;。您的XML不包含单词&#34; Customer&#34;所以我认为你有一个错字。
我不确切地知道你想从查询中返回什么(我假设只是整个匹配的节点?)。试试这个:
var genericValue = xmlDocument.Descendants("Product")
.FirstOrDefault(x => x.Attribute("ID").Value == "16");
我做了一个小提琴here,表明它在行动