如何反转Xml文件的内容?

时间:2014-02-27 14:31:13

标签: c# .net xml

我有一个xml文件,我想做的是反转它的元素。我的意思是第一个元素应该是last,last应该是第一个。我希望所有元素都能反转。

实施例。这应该是

<Elements>
<Element1>
<Element2>
<Element3>
<Element4>
</ Elements>

<Elements>
<Element4>
<Element3>
<Element2>
<Element1>
</ Elements>

任何人都可以帮助我实现这一目标吗?

3 个答案:

答案 0 :(得分:3)

将它们推入堆栈,然后将它们弹出以相反的顺序重建它。对文档中的每组嵌套元素递归执行此操作。

答案 1 :(得分:1)

阅读它们并致电.Reverse();

或者使用.OrderByDescending()

答案 2 :(得分:1)

确定。伙计们我已经为逆转创造了一个解决方案。

XmlDocument xd = new XmlDocument();
using (write = XmlWriter.Create(path2))
{
     write.WriteStartDocument();
     write.WriteStartElement("Customers");
     write.WriteEndElement();
     write.WriteEndDocument();
}

xd.Load(path2);

for (int i = count - 1; i >= 0; i--)
{    
     XmlNode node = xdoc.ChildNodes[1].ChildNodes[i];
     //XComment com = new XComment("-------Reversed-------");
     XmlNode xnode = xd.CreateNode(XmlNodeType.Element, "Customer", null);

     XmlNode nodeId = xd.CreateElement("Id");
     nodeId.InnerText = node.ChildNodes[0].InnerText;

     XmlNode nodeName = xd.CreateElement("Name");
     nodeName.InnerText = node.ChildNodes[1].InnerText;

     XmlNode nodeAge = xd.CreateElement("Age");
     nodeAge.InnerText = node.ChildNodes[2].InnerText;

     xnode.AppendChild(nodeId);
     xnode.AppendChild(nodeName);
     xnode.AppendChild(nodeAge);

     xd.DocumentElement.AppendChild(xnode);

     xd.Save(path2);
}

上面的代码首先加载必须反转其元素的文件的内容。然后它创建一个新文件,并以相反的顺序将元素存储在该文件中。 希望这会对某人有所帮助。