2013-08-04 8 views
5

У меня есть XmlNode, который представляет следующий XML, например:Удаление CDATA тег из XmlNode

XmlNode xml.innerText = 
<book> 
<name><![CDATA[Harry Potter]]</name> 
<author><![CDATA[J.K. Rolling]]</author> 
</book> 

Я хочу изменить этот узел так, что он будет содержать следующее:

XmlNode xml.innerText = 
<book> 
<name>Harry Potter</name> 
<author>J.K. Rolling</author> 
</book> 

Любой идеи?
Спасибо!

+0

является их какой-либо конкретная необходимостью удаления тегов или вы просто хотите, чтобы прочитать значение ? И, кстати, всегда отправляйте правильный образец. Вам не хватает заголовков cdata в вашем примере xml. – Ehsan

+0

Есть, Он передан клиенту – Niv

+0

, который создает xml? – Ehsan

ответ

8

хорошо, если это именно то, как вы выразились, то это легко:

xml.innerText = xml.innerText.Replace("![CDATA[","").Replace("]]",""); 
xmlDoc.Save();// xmlDoc is your xml document 
+0

К сожалению, это не совсем так, как я выразился. Он сложнее вложен, и этот код (который я попробовал), похоже, удаляет другие основные части, а также – Niv

+0

@Niv вы можете поделиться своим кодом или дать нам больше информации? это строковые манипуляции, которые вы хотите, я думаю, но я не знаю, какие именно манипуляции вам нужны. я могу помочь, если у вас есть дополнительная информация. –

+2

Это закончилось работой, просто с крошечной модификацией: вместо innerText мне нужно было использовать innerXML. Tnx! – Niv

1

Предлагаю вам прочитать весь ваш xml и переписать его. Вы можете прочитать значения без CDATA как этого

foreach (var child in doc.Root.Elements()) 
    { 
     string name = child.Name; 
     string value = child.Value 
    } 
+1

Возможно, что XML поставляется от третьего лица и его необходимо очистить. –

+0

Одной из причин удаления CDATA является то, что libxml не обрабатывает CDATA. Это потребовало бы, чтобы он принял данные, полученные от третьей стороны, и сделал его форматом, который будет работать или удалять его. См. [Gnome и CDATA] (https://mail.gnome.org/archives/xml/2008-September/msg00092.html). Кроме того, [Gnome и CDATA также] (http://www.xmlsoft.org/search.php?query=cdata&submit=Search). – Michele

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