[英]How to get the value of a specific nested XML element using LINQ to XML
[英]Get value from nested XML element
我想在“會計”工作類別下搜索“會計”的<code>
文本值。
以下是我正在考慮獲得此值的想法,但它不起作用。 訪問<code>
值的正確方法是什么?
XDocument xml = XDocument.Parse(xmlString);
var accountants = from c in xml.Root.Elements("JobCategory")
where c.Elements("Name").Equals("Accounting")
select c;
var code = from c in accountants.Descendants("Code")
select c;
我正在使用asp.net MVC。 xmlString
是這樣的:
<JobCategories xmlns="http://api.trademe.co.nz/v1" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<JobCategory>
<Name>Accounting</Name>
<Code>5001</Code>
<SubCategories>
<JobCategory>
<Name>Accountants</Name>
<Code>5002</Code>
</JobCategory>
<JobCategory>
<Name>Accounts administrators</Name>
<Code>5007</Code>
</JobCategory>
</SubCategories>
</JobCategory>
<JobCategory>
<Name>Agriculture, fishing & forestry</Name>
<Code>5015</Code>
<SubCategories>
<JobCategory>
<Name>Farming</Name>
<Code>5016</Code>
</JobCategory>
<JobCategory>
<Name>Fishing</Name>
<Code>5017</Code>
</JobCategory>
</SubCategories>
</JobCategory>
</JobCategories>
你有很多問題
首先,您的xml內容位於名稱空間中,但是您在代碼中不使用任何它們。 如果要按名稱訪問元素,則必須正確引用這些名稱。
表達式c.Elements("Name").Equals("Accounting")
是胡說。 您試圖獲取名為Name
的子元素,並比較該集合是否等於字符串"Accounting"
。 這顯然毫無意義。
假設您只是獲取元素的Code
值,則可以這樣做:
XNamespace ns = "http://api.trademe.co.nz/v1";
var codes =
from jc in doc.Root.Elements(ns + "JobCategory")
select (string)jc.Element(ns + "Code");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.