簡體   English   中英

如何將Xml轉換為字符串數組

[英]How to convert Xml to string array

目前我正在處理的應用程序將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命名空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM