2014-09-11 1 views
0

Элемент XML нижеАнализировать смешанные XML в C# Linq для 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> 

потребности преобразовать в

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

У меня есть метод, который принимает в элементе «содержание» в качестве параметра и возвращает " «элемент». Я не могу понять, как отображать текст из «текстового» элемента и ссылки в одно и то же время.

+0

Я вам нужно * * преобразовать текст - возможно, Linq к-Xml не правильный путь. Вы должны изучить [RegularExpressions] (http://msdn.microsoft.com/en-us/library/ms228595.aspx) –

+0

Это не текст, а xml. Я только поделился фрагментом xml. –

ответ

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 содержит более 1 «контент», я не могу заставить его работать. –

+1

Вместо удаления элемента с помощью content.Remove(), я попробовал text.Elements ("content"). Remove(); который сделал трюк. Я также запустил предыдущий код в цикле foreach, чтобы добавить элементы «a» соответствующим образом. –