Re: [討論] 在xml的tag中,指定一個帶有&的值
※ 引述《lama618 (618)》之銘言:
: php 可能會發出類似的警告:
: Warning: SimpleXMLElement::addChild()
: [simplexmlelement.addchild]: unterminated entity reference
: 可是我一開始直覺的想法是:
: 在xml中tag所存放的值,應該存的是raw data,也就是不經過格式化的值。
: 也許舉url這個例子比較不好,url它可能本身代表許多資訊,把資訊分割後,
: 可能自然就不需要「&」號。
: 我舉另個例子:萬一今天有個產品,它的編號名稱裡,真的使用了「&」號呢?
: 那為什麼我還必須去格式化它?
: 格式化後,若要取它的值出來時,又得做decode。
: 可是如果我不encode的話,請問在xml中有沒有什麼標準可以描述這件事?
: 好讓我使用的程式語言,以及display xml的軟體知道,我是故意不想encode的?
xml中儲存的值應該是符合xml規範的值,
其中 <>&" 等字需要被escape 才「符合xml規範」。
(<![CDATA[這類指定內容不被逸出的作法也行,只是內容不能包涵有]]>)
至於為什麼他真的使用 & 的時候你需要去 encode 他,
那正因為你要「正確且忠實地呈現他的樣子」在xml中。
至於取出的時候要decode他,
這也是基於同樣的「正確且忠實地呈現他的樣子」在實際的使用上。
另外你會問這個問題可能是你使用的 dom api 還不是那麼的友善,
一般而言我們在操作 dom api 時,
他通常都會幫我們處理encode/decode的問題。
你可能就是透過一個簡單的介面
Element.setText() 他就會自動幫你弄成encode後的內容存入xml ,
讀取xml檔後透過Document 操作 Element.getText() ,
就幫你從xml 中 decode出正確的內容回來。
你的這種問題其實比較常發生於自己去維護xml的狀況,
而原因是因為少了一層處理跟反處理的中間人,有時則是中間人做的不夠好。
但無論如何這些 eacape 是維持xml的「格式穩定」所必須的,
其他reader 或 client 不太會為你的獨特需求來處理這個問題。
-------------------------------------------------------------
你的這個問題其實是 SimpleXMLElement
在這個問題處理上的不足,不是xml的問題。
你可以參考
http://www.php.net/manual/en/simplexmlelement.addChild.php#89616
跟其他的評論,有一些可以自己再對他包裝來進行操作的作法。
--
What do you want to have ? / What do you have?
從書本中,你可以發現我的各種興趣。
從CD中,你可以瞭解我所喜歡的偶像明星。
或許從文字你很難以瞭解一個人,但從物品可以。
My PPolis , My past. http://ppolis.tw/user/Tony
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 74.207.224.18
推
03/09 18:05, , 1F
03/09 18:05, 1F
→
03/09 18:05, , 2F
03/09 18:05, 2F
→
03/09 18:05, , 3F
03/09 18:05, 3F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):