获取标签的名称在xml
问题描述:
我有解析XML文件来检索标签名称的问题。我有一个以下的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到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"/>
的东西创建只有名字是数量的标签? 不是U可以这样做:
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();
确定。你的代码中有什么不起作用?有什么异常?哪个错误?哪里?意外的结果?什么? BTW国际海事组织几个额外的{}将有助于可读性很多... – 2014-08-29 08:48:34
我想获得与标记国家的所有价值,我不知道如何 – egor 2014-08-29 08:49:52
我看这里很酷的家伙谁坐当前minusVat可能没有,但只能帮助 – egor 2014-08-29 08:52:49