Re: [討論] 在xml的tag中,指定一個帶有&的值

看板Web_Design作者 (沉默是金。)時間15年前 (2010/03/09 14:04), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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
非常感謝 您真的完全說中我的case
03/09 18:05, 1F

03/09 18:05, , 2F
後來我真的找到addChild的bug 回報,也是有人對它作hack
03/09 18:05, 2F

文章代碼(AID): #1BbUJ_8g (Web_Design)
文章代碼(AID): #1BbUJ_8g (Web_Design)