1
我有以下XML結構:如何使用LINQ to XML將上述元素上方的XML元素移動?
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root xmlns:xsi="My Program">
<NotRoot Text="Hello">
<SomeOption Text="Option 1" Centered="False">
<SomeOption Text="Option 1.1" Centered="False">
<SomeOption Text="Option 1.1.1" Centered="false">
<SomeOption Text="A" Centered="false">
<SpecialName Text="Blah blah" Centered="false">
<Number>1</Number>
</SpecialName>
</SomeOption>
<SomeOption Text="B" Centered="false">
<SpecialName Text="Hi" Centered="true">
<SomeStrangeName>42</SomeStrangeName>
</SpecialName>
</SomeOption>
<SomeOption Text="C" Centered="false">
<SpecialName Text="Some text here" Centered="false">
<Stuff>
<Thing1>10</Thing1>
<Thing2>20</Thing2>
<Thing3>30</Thing3>
</Stuff>
</SpecialName>
</SomeOption>
<SomeOption Text="D" Centered="false">
<SpecialName Text="Bye" Centered="false">
<Things>
<Random1>9846516981</Random1>
<Random2>8784749874</Random2>
</Things>
</SpecialName>
</SomeOption>
</SomeOption>
</SomeOption>
</SomeOption>
</NotRoot>
</Root>
我想元素 「C」 上移一個位置,從而使輸出看起來像這樣:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root xmlns:xsi="My Program">
<NotRoot Text="Hello">
<SomeOption Text="Option 1" Centered="False">
<SomeOption Text="Option 1.1" Centered="False">
<SomeOption Text="Option 1.1.1" Centered="false">
<SomeOption Text="A" Centered="false">
<SpecialName Text="Blah blah" Centered="false">
<Number>1</Number>
</SpecialName>
</SomeOption>
<SomeOption Text="C" Centered="false">
<SpecialName Text="Some text here" Centered="false">
<Stuff>
<Thing1>10</Thing1>
<Thing2>20</Thing2>
<Thing3>30</Thing3>
</Stuff>
</SpecialName>
</SomeOption>
<SomeOption Text="B" Centered="false">
<SpecialName Text="Hi" Centered="true">
<SomeStrangeName>42</SomeStrangeName>
</SpecialName>
</SomeOption>
<SomeOption Text="D" Centered="false">
<SpecialName Text="Bye" Centered="false">
<Things>
<Random1>9846516981</Random1>
<Random2>8784749874</Random2>
</Things>
</SpecialName>
</SomeOption>
</SomeOption>
</SomeOption>
</SomeOption>
</NotRoot>
</Root>
我的「向上移動元素「按鈕可識別要移動的元素以及其上面的元素,並使用此代碼:
public void MoveElementUp(XElement xeElementToMove)
{
XElement xeElementToMoveInXML = xmlRoot.Descendants().Single(xe => xe == xeElementToMove);
XElement xePrevious = XElement.Parse(xeElementToMoveInXML.PreviousNode.ToString());
// Do something here to put xeElementToMoveInXML before xePrevious
SaveXML();
}
我想我可能會以錯誤的方式去解決這個問題。也許我需要將它全部解析爲普通文本,然後以某種方式移動它,然後將其轉換回XML元素?
而downvote是因爲? – 2010-06-21 20:56:56
謝謝Jon!這正是我正在尋找的,我能夠用它來讓我的程序工作!不知道爲什麼有人低估。 – Coder7862396 2010-06-21 22:34:25