C#读取XML节点中的特定元素

时间:2016-05-15 16:55:03

标签: c# xml

我搜索了很长时间以获得答案,但我可以看到它不起作用。 我有一个XML文件,我想从节点读取一个特定的元素。 例如,这是XML:

<Root>
  <TV>
    <ID>2</ID>
    <Company>Samsung</Company>
    <Series>13523dffvc</Series>
    <Dimesions>108</Dimesions>
    <Type>LED</Type>
    <SmartTV>Yes</SmartTV>
    <OS>WebOS</OS>
    <Price>1993</Price>
  </TV>
</Root>

我希望将代码中的ID元素作为变量获取,这样我就可以为下一个要添加的项目增加它。 这是此时的代码,但我找不到从项目本身中选择内容的方法。

XDocument doc = XDocument.Load("C:TVList.XML");
XElement TV = doc.Root;
var lastElement = TV.Elements("TV").Last()

2 个答案:

答案 0 :(得分:2)

使用这样来获取id值

XDocument doc = XDocument.Load(@"C:\TVList.XML");
XElement root = doc.Element("Root");
XElement tv = root.Element("TV");
XElement id = tv.Element("ID");
string idvalue = id.Value;

还会将您的<Type>LED</Tip> xml标记设为<Type>LED</Type>以进行匹配

答案 1 :(得分:2)

查询最后一个电视的ID(如果没有元素,则会返回0):

var lastId = (int) doc.Descendants("TV")
    .Elements("ID")
    .LastOrDefault();

您可能还需要最高ID(如果他们没有按顺序排列):

var maxId = doc.Descendants("TV")
    .Select(x => (int)x.Element("ID"))
    .DefaultIfEmpty(0)
    .Max();

有关正常工作的演示,请参阅this fiddle