[xml]遇到escape也無用,才知道 CDATA 的好

  • 3944
  • 0

[xml]遇到escape也無用,才知道 CDATA 的好

我以前非常的直觀,覺得只要有 escape 特殊符號,就可以解決任何事,
(http://codebeta.blogspot.com/2010/09/xmlescape.html)
直到我遇到一個情況:
在 WebService (http + soap) 裡,內容是xml,裡面又一層 xml。
當微軟的元件(我只用過微軟的開發工具,但我想其他的工具也許也一樣),
把 soap 內容(第一層的 xml)轉回來的時候,也裡面那層的也一起轉換了。
所以內容的 DOM 結構跟預期的不同。

<a><b></b><c>&lt;c1&gt;abcd&lt;/c1&gt;</c><d></d></a>  <!--本來的樣子 c 的內容是個 c1 element 已跳脫—>

<a><b></b><c><c1>abcd</c1></c><d></d></a>  <!--實際的樣子 導致取 c 內容(innerText)不如預期的 &lt;c1&gt;abcd&lt;/c1&gt; 影響後續程式動作-->

這時,應該就是使用 CDATA 來標示內容為文字,避免錯誤。
像這樣:

<a><b></b><c><![CDATA[<c1>abcd</c1>]]></c><d></d></a>

 

 

 

分享