簡體   English   中英

從嵌套的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 &amp; 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM