2011-06-03 80 views
0

任何人都可以请示范我如何通过使用Linq到XML读取下面的外部节点;Linq到XML阅读外在节点

<Root> 
<ItemDetail> 
     <UnitPrice> 
     <Money currency="NZ">32</Money> 
     </UnitPrice> 
     <Description xml:lang="en">abc description</Description> 
     <UnitOfMeasure>CU</UnitOfMeasure> 
     <Classification domain="N/A"/> 
     <ManufacturerPartID>12345678</ManufacturerPartID> 
     <Extrinsic name="StockCode">23333</Extrinsic> 
     <Extrinsic name="Quantity">1</Extrinsic> 
</ItemDetail> 
<ItemDetail> 
     <UnitPrice> 
     <Money currency="NZ">32</Money> 
     </UnitPrice> 
     <Description xml:lang="en">abc description</Description> 
     <UnitOfMeasure>CU</UnitOfMeasure> 
     <Classification domain="N/A"/> 
     <ManufacturerPartID>12345678</ManufacturerPartID> 
     <Extrinsic name="StockCode">23333</Extrinsic> 
     <Extrinsic name="Quantity">1</Extrinsic> 
</ItemDetail> 
<ItemDetail> 
     <UnitPrice> 
     <Money currency="NZ">32</Money> 
     </UnitPrice> 
     <Description xml:lang="en">abc description</Description> 
     <UnitOfMeasure>CU</UnitOfMeasure> 
     <Classification domain="N/A"/> 
     <ManufacturerPartID>12345678</ManufacturerPartID> 
     <Extrinsic name="StockCode">23333</Extrinsic> 
     <Extrinsic name="Quantity">1</Extrinsic> 
</ItemDetail> 
</Root> 
+0

答案与你问的最后一个问题没有多大差别(http://stackoverflow.com/questions/6167541/linq-to-xml-reading-xml-document)。尝试适应。 – 2011-06-03 11:35:35

+0

@Martin,如果您仔细阅读,您提供的链接不会回答外部节点。我试过了,有没有一种方法来读取linq到XML中的名称,因为我的名字属性都是一样的? – 2011-06-03 11:37:51

回答

1

你想达到什么目的?每个ItemDetail元素似乎都有两个Extrinsic子元素。你想访问两个?

var data = from item in XElement.Load("file.xml").Elements("ItemDetail") 
      select new { 
       stockcode = (int)item.Elements("Extrinsic").First(e => e.Attribute("name").Value == "StockCode"), 
       quantity = (int)item.Elements("Extrinsic").First(e => e.Attribute("name").Value == "Quantity") 
      }; 

我不知道股票代码是一个整数,但当然,你可以采取的字符串值,而不是(即的,而不是(string)(int))。

+0

谢谢@马丁。正是我在找什么,感谢它。 – 2011-06-03 21:35:57