2014-07-23 86 views
0

所以我要下一個XML文檔:如何在發現的XDocument元素和閱讀後他們下一個元素

<Items> 
    <Item> 
      <ID>123</ID> 
      <Name>Super Item</Name> 
      <Count>1</Count> 
      <Price>45</Price> 
    </Item> 
    <Item> 
      <ID>456</ID> 
      <Name>not super Item</Name> 
      <Count>10</Count> 
      <Price>5</Price> 
    </Item> 
    <Item> 
      <ID>789</ID> 
      <Name>Simple Item</Name> 
      <Count>6</Count> 
      <Price>10</Price> 
    </Item> 
</Items> 

所以,我怎麼能找到ID所需的項目和閱讀下一值?提前致謝。

代碼:

的XDocument DOC = XDocument.Load(文件路徑);

foreach (var item in doc.Descendants("ID")) 
{ 
    if ((string)item.Element("ID") == "789") 
    { 

     How to read Name "Simple Item"? 
     How to read Count "6"? 
     How to read Price "10"? 

    } 
} 
+4

你介意到目前爲止顯示你的代碼嗎?這聽起來像你要求我們爲你做,並給你代碼。如果您需要一些幫助入門,我建議您查看[XDocument](http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument(v = vs.110).aspx), [XMLDocument](http://msdn.microsoft.com/en-us/library/system.xml.xmldocument(v = vs.110).aspx)和/或[LINQ to XML](http:// msdn .microsoft.com/EN-US /庫/ bb387098.aspx)。這些鏈接中有很多示例和文檔,其他問題就像這裏的SO,以及互聯網上其他地方的示例/教程。 – tnw

+0

請不要添加代碼作爲評論,編輯您的文章並在那裏格式化,因此它實際上是可讀的。 – tnw

+0

在帖子中添加代碼。謝謝 – user3159897

回答

0

通過你要求,你可以FORMATT這樣你的XML內容:

<Items> 
    <Item id="123"> 
    <Name>Super Item</Name> 
    <Count>1</Count> 
    <Price>45</Price> 
    </Item> 
    <Item id="456"> 
    <Name>not super Item</Name> 
    <Count>10</Count> 
    <Price>5</Price> 
    </Item> 
    <Item id="789"> 
    <Name>Simple Item</Name> 
    <Count>6</Count> 
    <Price>10</Price> 
    </Item> 
</Items> 

然後在代碼:

int yourId = 456; 
XDocument doc = XDocument.Load("test.xml"); 
var result = from el in doc.Root.Elements("Item") 
      where el.Attribute("id").Value == yourId.ToString() 
      select el; 

這裏的ID是attribute.And讀取其值2種方式:

//1º 
foreach (var item in result.Elements()) 
{ 
    Console.WriteLine(item.Name + " = " + item.Value); 
} 

//2º - will print the element 
Console.WriteLine(result); 
+0

謝謝。有用) – user3159897

0

這取決於你想,當你發現這些值做什麼。下面是一個使用foreach循環找到與指定ID的項目,並返回它的一般方法的名字:

private string GetItemName(string _id) 
{ 
    XmlDocument xDoc = new XmlDocument(); 
    xDoc.Load("myXmlFile.xml"); 

    foreach (XmlNode item in xDoc.SelectNodes("/Items/Item")) 
    { 
     if (item.SelectSingleNode("ID").InnerText == _id) 
     { 
      // we found the item! Now what do we do? 
      return item.SelectSingleNode("Name").InnerText; 
     } 
    } 
    return null; 
} 
+0

我想通過ID查找項目並閱讀所有此項目值 – user3159897

+0

感謝您的回答) – user3159897