我在解析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>
我想做数组或选择包含所有标记名称的列表,例如country。我有以下代码:
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()
};
}
如何解决这个问题?有什么想法吗?
答案 0 :(得分:1)
这是我的想法,但您必须先创建列表“名称”。试试这个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);
(...)
}
答案 1 :(得分:0)
“我想做数组或选择包含所有标记名称的列表,例如country。”
“我想用标签国家获得所有价值,我不知道如何”
您可以尝试使用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();