c#中的XML记录到数组
本文关键字:数组 记录 XML 中的 | 更新日期: 2023-09-27 18:05:22
我整个上午都在尝试,但我似乎不能让这个工作。我有一个XML文件,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<Details>
<cityItems>
<city>Amsterdam</city>
<city>New York</city>
</cityItems>
<streetItems>
<street>Mainstreet</street>
<street>Secondstreet</street>
</streetItems>
</Details>
我试图得到这样的输出;
string[] cities = { "Amsterdam", "New York" };
string[] streets = { "Mainstreet", "Secondstreet" };
街道和城市之间没有任何联系。我似乎在网上找不到合适的例子来让这个工作。
你能帮助我或指给我正确的方向吗?谢谢。
我已经改变了你的xml,使它有正确的关闭节点</cityItems>
var xml = XDocument.Parse(str);
Func<string, string[]> readAllCities =
nodeName =>
xml.Descendants(nodeName)
.SelectMany(node => node.Elements("city")
.Select(v => v.Value))
.ToArray();
string[] streets = readAllCities("streetItems");
string[] cities = readAllCities("cityItems");
我将保留旧版本的代码副本,以便您可以选择更好的,并将其更舒适地集成到您的解决方案中
string[] cities = xml.Descendants("cityItems")
.SelectMany(node => node.Elements("city")
.Select(v => v.Value))
.ToArray();
string[] strets = xml.Descendants("streetItems")
.SelectMany(node => node.Elements("city")
.Select(v => v.Value))
.ToArray();
我猜您需要使用LINQ to XML并将结果循环到数组。这里有一些东西可以指引你正确的方向
XDocument xdoc = XDocument.Load("data.xml");
//Run query
var lv1s = from lv1 in xdoc.Descendants("level1")
select new {
Header = lv1.Attribute("name").Value,
Children = lv1.Descendants("level2")
};