简体   繁体   English

如何在 c# 中获取 XML 中相同节点的值

[英]How to get value of same nodes in XML in c#

I want to get the value of artist (Bob Dylan) for title "Greatest Hits" in the xml below我想在下面的 xml 中获得艺术家 (Bob Dylan) 标题“Greatest Hits”的价值

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <price>10.90</price>
  </cd>
  <cd>
    <title>Hide your heart</title>
    <artist>Bonnie Tyler</artist>
    <price>10.0</price>
  </cd>
  <cd>
    <title>Greatest Hits</title>
    <artist>Bob Dylan</artist>
    <price>10.90</price>
  </cd>
</catalog>

Adapt it as you need...根据需要调整它...

using System.Xml;

static void GetArtistFromXml()
{
    var xml = "<?xml version=\"1.0\" encoding=\"ISO - 8859 - 1\"?><catalog><cd><title>Empire Burlesque</title><artist>Bob Dylan</artist><price>10.90</price></cd><cd><title>Hide your heart</title><artist>Bonnie Tyler</artist><price>10.0</price></cd><cd><title>Greatest Hits</title><artist>Bob Dylan</artist><price>10.90</price></cd></catalog>";

    var xmlDocument = new XmlDocument();
    xmlDocument.LoadXml(xml);

    var artistElement = xmlDocument.DocumentElement.SelectSingleNode("//cd[title[text()=\"Greatest Hits\"]]/artist");

    Console.WriteLine(artistElement.InnerText);
}

It is better to use LINQ to XML API.最好使用LINQ 到 XML API。 It is available in the.Net Framework since 2007.它自 2007 年起在 .Net Framework 中可用。

c# c#

void Main()
{
    const string filename = @"e:\Temp\AmeyP.xml";

    XDocument xdoc = XDocument.Load(filename);

    string artist = xdoc.Descendants("cd")
        .Where(x => x.Element("title").Value.Equals("Greatest Hits"))
        .Elements("artist").FirstOrDefault()?.Value;

    Console.WriteLine(artist);
}

Output Bob Dylan Output鲍勃·迪伦

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM