如何将Xml转换为字符串数组
本文关键字:字符串 数组 转换 Xml | 更新日期: 2023-09-27 17:58:56
当前我正在处理的应用程序将XML返回到字符串中。
String xml = getData();
但现在我需要将其转换为字符串数组,Xml将类似于以下内容:
<details>
<row>
<Year>2014</Year>
<Person>Bob</Person>
</row>
<row>
<Year>2013</Year>
<Person>Fred</Person>
</row>
</details>
如果XML保存在文件中,我已经看到了如何做到这一点,但这不是一个选项。有什么想法吗?
我想要一个字典数组或数组列表,其值如下所示:年,年,年
人,人,人
您可以尝试以下方式:
var doc = XDocument.Parse(xml);
var rows = from row in doc.Root.Elements("row") select row;
//array of person
var persons = rows.Select(o => (string) o.Element("Person")).ToArray();
//array of year
var years = rows.Select(o => (string)o.Element("Year")).ToArray();
如果您想在单个数组中获取<row>
中的所有元素,请尝试以下方法:
//you can remove OrderBy part if it isn't necessary
var result = rows.SelectMany(o => o.Elements())
.OrderBy(o => o.Name.LocalName)
.Select(o => (string) o).ToArray();
根据本文中给出的答案
var rows = XDocument.Load("filename.xml")
.Root.Elements()
.Select(row => row.Elements()
.ToDictionary(v => v.Attribute("name").Value,
v => v.Attribute("value").Value);
假设"details"是XmlFile的根元素,文件名为"XMLFile1.xml",则可以使用以下内容:
XmlDocument doc = new XmlDocument();
doc.Load("XMLFile1.xml");
var rows = doc.GetElementsByTagName("row").Cast<XmlElement>();
var persons = rows.SelectMany(x => x.GetElementsByTagName("Person")
.Cast<XmlElement>()).ToArray().Select(x => x.InnerText).ToArray();
var years = rows.SelectMany(x => x.GetElementsByTagName("Year")
.Cast<XmlElement>()).ToArray().Select(x => x.InnerText).ToArray();
不要忘记包含Linq命名空间。