如何将Xml转换为字符串数组

时间:2014-04-19 08:51:26

标签: c# xml string arrays

目前我正在处理的应用程序将XML返回到字符串中。

String xml = getData();

但现在我需要将其转换为字符串数组,Xml将是这样的:

<details> 
 <row> 
  <Year>2014</Year> 
  <Person>Bob</Person> 
 </row> 
 <row> 
  <Year>2013</Year> 
  <Person>Fred</Person> 
 </row> 
</details> 

如果将XML保存在文件中,我已经看过如何执行此操作,但这不是一个选项。 任何想法?

我希望有类似字典数组或数组列表,其值如下所示: 年,年,年

人,人,人

3 个答案:

答案 0 :(得分:3)

您可以尝试这种方式:

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();

答案 1 :(得分:0)

根据post

中给出的答案
var rows = XDocument.Load("filename.xml")
                    .Root.Elements()
                    .Select(row => row.Elements()
                                      .ToDictionary(v => v.Attribute("name").Value,
                                                    v => v.Attribute("value").Value);

答案 2 :(得分:0)

假设&#34;详细信息&#34;是XmlFile的根元素,文件的名称是&#34; XMLFile1.xml&#34;,您可以使用它:

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命名空间。