获取xml中标记的名称

本文关键字:xml 获取 | 更新日期: 2023-09-27 18:19:53

我在解析xml文件以检索标记名称时遇到问题。我有以下xml文件:

<city version="1.2" last_updated="Thu, 28 Aug 2014 12:10:38 +0300">
  <city id="8750">
    <name>Лондон</name>
    <name_en>London</name_en>
    <region/>
    <country>Великобритания</country>
    <country_id>826</country_id>
  </city>
  <city id="110254">
    <name>Лондон</name>
    <name_en>London</name_en>
    <region/>
    <country>Канада</country>
    <country_id>124</country_id>
  </city>
    <city id="58690">
    <name>Лондон</name>
   <name_en>London</name_en>
   <region>Arkansas</region>
   <country>Соединенные Штаты Америки</country>
   <country_id>840</country_id>
  </city>
  <city id="65450">
    <name>Лондон</name>
    <name_en>London</name_en>
    <region>Kentucky</region>
    <country>Соединенные Штаты Америки</country>
    <country_id>840</country_id>
  </city>
  <city id="76284">
    <name>Лондон</name>
    <name_en>London</name_en>
    <region>Ohio</region>
    <country>Соединенные Штаты Америки</country>
    <country_id>840</country_id>
  </city>
  <city id="131">
    <name>Макеевка</name>
    <name_en>Makiivka</name_en>
    <region>Донецкая область</region>
    <country>Украина</country>
    <country_id>804</country_id>
  </city>
</city>

我想用标签的所有名称做数组或选择列表,例如国家。我有以下代码:

  string filePath = String.Format("http://xml.weather.co.ua/1.2/city/?search={0}", name);
            var xmlDocument = new XmlDocument();
            xmlDocument.Load(filePath);
            if (xmlDocument.DocumentElement != null)
                foreach (XmlNode xmlNode in xmlDocument.GetElementsByTagName("city"))
                    yield return new SelectListItem
                    {
                        Text = xmlNode.Value,
                        Value = xmlNode.ToString()
                    };
        }

如何解决这个问题?知道吗?

获取xml中标记的名称

这是我的想法,但之前必须创建列表"名称"。试试这个LINQ to xml:

XDocument xDoc = XDocument.Load("your xml file");
foreach (var elem in xDoc.Document.Descendants("country"))
{
    names.Add(elem.Name);
}

如果你能修改一个xml为我更清晰的形式,比如:

<city id="8750" name="Лондон" name_en="London" region="" country="Великобритания" country_en="826"/>

创建这么多只有名字的标签有什么用?你可以做到:

XDocument xDoc = XDocument.Load("your xml file");
foreach (var elem in xDoc.Document.Descendants("city"))
{
    names.Add(elem.Attribute("name").Value);
    name_en.Add(elem.Attribute("name_en").Value);
    (...)
}

"我想用标签的所有名称做数组或选择列表,例如国家"

"我想获得标签国家的所有价值,我不知道如何";

您可以尝试使用XDocument来获取国家名称数组:

string url = "http://xml.weather.co.ua/1.2/city/?search=%D0%BB%D0%BE%D0%BD%D0%B4%D0%BE%D0%BD";
XDocument doc = XDocument.Load(url);
var countries = doc.Descendants("city")
                   .Elements("country")
                   .Select(o => (string)o)
                   .ToArray();