获取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()
};
}
如何解决这个问题?知道吗?
这是我的想法,但之前必须创建列表"名称"。试试这个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();