我有以下格式的xml:
<parent>
<child id="1"> test1 </child>
<child id="2"> test2 </child>
</parent>
如何获取所有子节点的csv?就像,这就是我需要的方式:
<parent>
<children>1|test1;2|test2</children>
</parent>
其中|和;是分隔符。
有关如何使用LINQ完成任何建议吗?
答案 0 :(得分:0)
File.WriteAllText("C:\\myText.csv",
"<parent><children>" +
String.Join(";",
XDocument.Load("C:\\my.xml").Descendants("child")
.Select(e => e.Attribute("id") + "|" + e.Value)) +
"</children></parent");
答案 1 :(得分:0)
var xml = @"<parent>
<child id=""1""> test1 </child>
<child id=""2""> test2 </child>
</parent>";
XElement parentElement = XElement.Parse(xml);
var childElements = parentElement.Elements("child").ToList();
var concatenatedValue = string.Join(";", childElements.Select(c => c.Attribute("id").Value + "|" +c.Value).ToArray());
childElements.ForEach(c => c.Remove());
parentElement.Add(new XElement("child", concatenatedValue));
var newXml = parentElement.ToString();
答案 2 :(得分:0)
XDocument inDoc = XDocument.Parse(
"<parent><child id='1'>test1</child><child id='2'>test2</child></parent>");
XDocument outDoc = XDocument.Parse(
String.Format("<parent><children>{0}</children></parent>",
String.Join(";",
inDoc.Root.Elements()
.Select(e => e.Attribute("id").Value + "|" + e.Value)
.ToArray())));