2009-11-09 4 views

Répondre

3

Le noeud OPTIONB équivaut à:

<OPTIONB> 
    <![CDATA[ 
cccccccccccccccccccc      

    dddddddddddddd]]> 
</OPTIONB> 

Donc, pour obtenir la valeur dans la section CDATA, vous pouvez utiliser les éléments suivants:

var cdata = XElement.Load("test.xml").Element("OPTIONB").Value; 

Vous ne serez pas en mesure d'obtenir les valeurs CDATA séparément car ils ont la même sémantique que s'il s'agissait d'une section CData unique pour un analyseur XML.

+0

solution fournie ne fonctionne pas en commun - si l'élément contient du texte ou d'autres noeuds votre code retourneront _wrong_ résultat –

+0

Cette réponse fonctionnera pour la plupart des cas. Juste pour clarifier le cas de bord de Mirvoda, appeler '.Value' sur n'importe quoi équivaut à concaténer les chaînes' .Value' de chaque sous-élément ensemble (le texte et le CDATA sont techniquement des sous-éléments) dans l'ordre où ils apparaissent. 'New XElement (" test "," du texte non-cdata ", nouveau XElement (" a "," avalue "), nouveau XCData (" some cdata' {line break} 'est ici"), nouveau XElement ("b", "bvalue", nouveau XElement ("subb", "subbvalue")), "un peu plus de texte non-cdata"). Value' ... devient ... 'certains non-cdata textavaluesome cdata' {line break} 'est dans herebvaluesome plus de texte non-cdata' – patridge

1
XElement.Load("test.xml") 
.Element("OPTIONB") 
    .Nodes() 
    .Where(x=>x is XCData).First().Cast<XCData>().Value 
Questions connexes