2014-02-27 2 views
-11

У меня есть xml-файл, и что я хочу сделать, это изменить его элементы. Я имею в виду, что первым элементом должен быть последний, а последний должен быть первым. Я хочу, чтобы все элементы изменились.Как изменить содержимое Xml-файла?

Ex. Это должно быть

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

Это

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

Может кто-нибудь помочь мне достичь этого?

+3

Можете прочесть код, написанный вами для этого? –

+3

Этот вопрос не имеет смысла. Стандарт XML не дает представления о порядке, в котором XML-парсер должен читать элементы. Хотя все синтаксические анализаторы, которые я знаю, читают элементы в том порядке, в котором они найдены, на самом деле * нет * порядка элементов на одном и том же уровне. Таким образом, на самом деле нет ничего, чтобы «обратить вспять». –

ответ

3

Нажмите их на стек, а затем вытащите их, чтобы перестроить в обратном порядке. Сделайте это рекурсивно для каждого набора вложенных элементов в документе.

+0

Можете ли вы, пожалуйста, показать мне пример? Я имею в виду код. – maestrosan11

+2

@ maestrosan11 Не могли бы вы что-нибудь попробовать? Вы получили пару ответов, которые должны вывести вас в правильном направлении. Никто здесь не страшно мотивирован, чтобы просто сделать это за вас. – tnw

+0

@ShaneWealti Спасибо за совет. Я попробовал это самостоятельно и с небольшой помощью от кого-то другого мне удалось заставить его работать. – maestrosan11

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

Приведенный выше код сначала загружает содержимое файла, элементы которого должны быть отменены. Затем он создает новый файл и сохраняет элементы в этом файле в обратном порядке. Надеюсь, это поможет кому-то.

+0

Рад, что вы попробовали. Обычно вы должны попробовать и сделать это, прежде чем спрашивать здесь. – ouflak

Смежные вопросы