[xml]遇到escape也無用,才知道 CDATA 的好
我以前非常的直觀,覺得只要有 escape 特殊符號,就可以解決任何事,
(http://codebeta.blogspot.com/2010/09/xmlescape.html)
直到我遇到一個情況:
在 WebService (http + soap) 裡,內容是xml,裡面又一層 xml。
當微軟的元件(我只用過微軟的開發工具,但我想其他的工具也許也一樣),
把 soap 內容(第一層的 xml)轉回來的時候,也裡面那層的也一起轉換了。
所以內容的 DOM 結構跟預期的不同。
<a><b></b><c><c1>abcd</c1></c><d></d></a> <!--本來的樣子 c 的內容是個 c1 element 已跳脫—>
<a><b></b><c><c1>abcd</c1></c><d></d></a> <!--實際的樣子 導致取 c 內容(innerText)不如預期的 <c1>abcd</c1> 影響後續程式動作-->
這時,應該就是使用 CDATA 來標示內容為文字,避免錯誤。
像這樣:
<a><b></b><c><![CDATA[<c1>abcd</c1>]]></c><d></d></a>