2009-11-09 55 views

回答

3

OPTIONB節點相當於:

<OPTIONB> 
    <![CDATA[ 
cccccccccccccccccccc      

    dddddddddddddd]]> 
</OPTIONB> 

因此獲得CDATA部分中,你可以使用以下值:

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

您將無法獲得在CDATA值因爲它們具有相同的語義,就好像它是XML解析器的單個CData節一樣。

+0

提供的解決方案並不常見工作 - 如果元素包含文本或其它節點的代碼將返回_wrong_結果 – 2010-01-28 06:05:15

+0

這個答案將在大多數情況下工作。爲了澄清Mirvoda邊緣情況,在任何情況下調用'.Value'就等同於將每個子元素的'.Value'字符串按照它們出現的順序連接在一起(文本和CDATA在技術上是子元素)。新的XElement(「test」,「一些非cdata文本」,新的XElement(「a」,「avalue」),新的XCData(「some cdata' {line break}'在這裏」),新的XElement (「b」,「bvalue」,新的XElement(「subb」,「subbvalue」)),「一些更多非cdata文本」)。' ...變成... '一些非cdata textavaluesome cdata' {line break}'在這裏還有更多非cdata文本' – patridge 2010-02-11 21:55:52

1
XElement.Load("test.xml") 
.Element("OPTIONB") 
    .Nodes() 
    .Where(x=>x is XCData).First().Cast<XCData>().Value 
相關問題