我想在职位类别会计下搜索会计师<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>
答案 0 :(得分:0)
您有很多问题
首先,您的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");