Извлечение данных из CDATA с использованием LINQ to XML - PullRequest
4 голосов
/ 15 сентября 2010

У меня есть следующий xml-файл, и я пытаюсь использовать linq to xml, чтобы получить элементы, находящиеся в разделе CDATA.Любые предложения, пожалуйста.

<?xml version = "1.0" encoding = "UTF-8"?>
<result final = "true" transaction-id="84WO" xmlns="http://cp.com/rules/client">
<client id = "CustName'>
<quoteback>
</client>
<report format = "CP XML">
<![CDATA[<?xml version="1.0" encoding = "UTF-8" standalone = "yes"?>
 <personal_auto xmlns = "http://cp.com/rules/client">
    <admin>
    </admin>
    <report>
    </report>
 </personal_auto>
]]>
</report> </result>

Ответы [ 3 ]

4 голосов
/ 10 марта 2011
 XElement XTemp = XElement.Load(YourXMLfile);  
var queryCDATAXML = from element in XTemp.DescendantNodes()
                         where element.NodeType == System.Xml.XmlNodeType.CDATA
                         select element.Parent.Value.Trim(); 
1 голос
/ 15 сентября 2010

Это стандартная функциональность LINQ - см. http://msdn.microsoft.com/en-us/library/system.xml.linq.xcdata.aspx

Не могли бы вы объяснить проблему более подробно, если это не решит ее?

0 голосов
/ 23 декабря 2013

Я хотел сделать что-то немного другое - я встраиваю sql в xml, используя cdata, в его собственный выделенный элемент с именем 'sql'

Просто для пояснения, что содержимое cdata будет прочитано прозрачно.

если вы сделаете

var cdataContent = sql.Value;

, вы получите любую строку в теге

 <![CDATA[..]]>

без необходимости создания экземпляра другого типа узла поверх него или выполнения чего-либо необычного

так что в приведенном выше случае cdataContent будет просто "..".

Linq to sql действительно хорош!Я всегда ожидаю, что будет больше возиться с участием.Снимаю шляпу перед парнями, которые создали этот API.

...