2014-09-11 56 views
0

下面在C#的LINQ解析混合XML到XML

<text>this is some text <content><link attr="someattr">text to appear in link</link></content> . this is the end of the text</text> 

需要的XML元素轉變成

<p>this is some text <a attr="someattr">text to appear in link</a> . this is the end of the text</p> 

我有在「內容」元件採用作爲參數並返回「的方法一個「元素。我無法弄清楚如何同時顯示來自「text」元素和鏈接的文本。

+0

我,你需要變換* *文本 - 也許LINQ到XML是不正確的方式去。您應該查看[RegularExpressions](http://msdn.microsoft.com/en-us/library/ms228595.aspx) – 2014-09-11 06:42:01

+0

這不是文本而是xml。我只分享了xml的片段。 – 2014-09-11 22:36:08

回答

1

你可以試試這個方法:

var xml = 
    @"<text>this is some text <content><link attr=""someattr"">text to appear in link</link></content> . this is the end of the text</text>"; 
var text = XElement.Parse(xml); 
//change <text> to <p> 
text.Name = "p"; 

var content = text.Element("content"); 
var link = content.Element("link"); 

//change <link> to <a> 
link.Name = "a"; 

//move <a> to be after <content> 
content.AddAfterSelf(link); 

//remove <content> tag 
content.Remove(); 

//print result 
Console.WriteLine(text.ToString()); 
+0

這實際上工作,但當xml包含多個「內容」元素,然後我無法得到它的工作。 – 2014-09-11 22:37:36

+1

而不是使用content.Remove()刪除元素,我試過text.Elements(「content」)。這是訣竅。我還在foreach循環中運行了前面的代碼,以適當地添加「a」元素。 – 2014-09-11 23:14:15