【发布时间】:2014-10-01 09:28:09
【问题描述】:
我是 C# 新手,有一个问题希望有人能帮助我解决?
我有一个非常小的代码 sn-p 来对一个大的 XML 文件进行排序。
using System;
using System.Linq;
using System.Xml.Linq;
public class XMLsort
{
public static void Sort(string netMyFile, string netOutFile)
{
XElement root = XElement.Load(netMyFile);
var orderedtabs = root.Elements("aidocument")
.OrderBy(xtab => (string)xtab.Element("aidocumentheader").Element("accountno"))
.ToArray();
root.RemoveAll();
foreach (XElement tab in orderedtabs)
root.Add(tab);
root.Save(netOutFile);
}
}
这很好用,但是它正在删除一些根标签,我想知道如何将它们保留在排序的输出中?
原始 XML 是:
<?xml version="1.0" encoding="windows-1252" ?>
<aitransmission xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation="C:\Myschema\mysampleschema.xml">
<transmissionid>20120730DOCS</transmissionid>
<transmissiontime>23:02:19</transmissiontime>
<transmissiondate>2012-27-07</transmissiondate>
<transmissionsource>fromprd</transmissionsource>
<transmissioncount>71</transmissioncount>
<aidocument documenttype="adv">
[data]
</aidocument>
<aidocument documenttype="adv">
[data]
</aidocument>
<aidocument documenttype="adv">
[data]
</aidocument>
</aitransmission>
返回的 XML 是:
<?xml version="1.0" encoding="utf-8"?>
<aitransmission>
<aidocument documenttype="adv">
[sorted data]
</aidocument>
<aidocument documenttype="adv">
[sorted data]
</aidocument>
<aidocument documenttype="adv">
[sorted data]
</aidocument>
因此“传输*”标签被剥离。
有人可以帮忙吗?
【问题讨论】: