2010-09-15 6 views
4

J'ai le fichier xml suivant et j'essaie d'utiliser linq en XML pour obtenir les éléments qui résident dans la section CDATA. Toutes les suggestions s'il vous plaît.Extraire des données de CDATA en utilisant LINQ to XML

<?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> 
+0

S'il vous plaît modifier votre question (et cette fois utiliser un aperçu) car je ne vois rien dans votre échantillon XML. –

+0

Votre fichier XML n'est pas valide. La ligne '

+0

John, c'est une faute de frappe. – BumbleBee

Répondre

4
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

Ceci est une fonctionnalité standard LINQ - voir http://msdn.microsoft.com/en-us/library/system.xml.linq.xcdata.aspx

Pourriez-vous s'il vous plaît expliquer le problème plus en détail si cela ne résout pas?

+0

Mon exigence est d'obtenir tous les éléments dans la section CDATA comment puis-je l'obtenir en utilisant LINQ to XML – BumbleBee

+1

Ah, vous voulez que quelqu'un fasse votre travail pour vous. Pas réellement répondre à une question. Droite. Un rapide Google plus tard: http://www.jarvis.com.au/post/2008/09/I-love-Linq-to-XML.aspx – Rushyo

+0

Rushyo. Pardon. Mon fichier XML contient un fichier XML dans la section CDATA. La tâche que j'essaie de réaliser ici est que je dois pouvoir naviguer dans le fichier xml dans la section CDATA et extraire les éléments nécessaires. des suggestions s'il vous plaît? – BumbleBee

0

je cherchais à faire quelque chose un peu différent - j'intégrer sql en XML en utilisant CDATA dans son propre élément dédié nommé « sql »

Juste pour clarifier le contenu CDATA sera lu de manière transparente.

si vous

var cdataContent = sql.Value; 

vous obtenez ce que la chaîne est dans la balise

<![CDATA[..]]> 

sans avoir à instancier un autre type de noeud sur le dessus de celui-ci ou quoi que ce soit de fantaisie

si dans le cas ci-dessus, cdataContent serait simplement "..".

Linq à sql est vraiment sympa! Je m'attends toujours à ce qu'il y ait plus de problèmes à impliquer. Chapeau aux gars qui ont fait cette API.

Questions connexes