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

看板Web_Design作者 (618)時間16年前 (2010/03/09 00:57), 編輯推噓4(408)
留言12則, 5人參與, 最新討論串1/2 (看更多)
我想嘗試對一個xml檔案做操作,使用的語言是php。 在過程中我遇到了一個問題,有個想法不知道正不正確,想請教大家: 我想指定一個帶有「&」的字串值給某個tag,我可不可以不要對「&」做encode? ============================================================= ex:在下面的xml中,有一個tag: <site_url>,其值為一個網址,我預期的格式為: <?xml version="1.0" encoding="utf-8"?> <xml> <site_url>http://xxx.com.com/aaa.php?a=ddd&c=ddd</site_url> </xml> =============================================================== 假設這串網址的是由使用者在一個html form 裡面輸入, 再經由post或get的方法傳遞到server端,然後server端去生成這個example檔 當server端接收到這個字串後, 我使用simplexml裡的addChild() method來新增一個節點為,並指定其值為這個網址。 但如果我沒有嘗試對這個字串做encode的話, php 可能會發出類似的警告: Warning: SimpleXMLElement::addChild() [simplexmlelement.addchild]: unterminated entity reference 可是我一開始直覺的想法是: 在xml中tag所存放的值,應該存的是raw data,也就是不經過格式化的值。 也許舉url這個例子比較不好,url它可能本身代表許多資訊,把資訊分割後, 可能自然就不需要「&」號。 我舉另個例子:萬一今天有個產品,它的編號名稱裡,真的使用了「&」號呢? 那為什麼我還必須去格式化它? 格式化後,若要取它的值出來時,又得做decode。 可是如果我不encode的話,請問在xml中有沒有什麼標準可以描述這件事? 好讓我使用的程式語言,以及display xml的軟體知道,我是故意不想encode的? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.106.74

03/09 01:06, , 1F
這樣想好了:如果今天有個產品名稱用了「<」號呢?
03/09 01:06, 1F

03/09 01:13, , 2F
我這時就會想說 有沒有一個xml屬性,可以讓我把tag的
03/09 01:13, 2F

03/09 01:14, , 3F
所用的識別符號< >,換成我們平常不可能由鍵盤輸入的字元
03/09 01:14, 3F

03/09 02:50, , 4F
如果可以的話,你要怎麼輸入那個字元呢?
03/09 02:50, 4F

03/09 08:52, , 5F
我也順便提個問題: reader 要怎麼在讀 xml 得知屬性之前
03/09 08:52, 5F

03/09 08:53, , 6F
就得知你把這個字換掉了?
03/09 08:53, 6F

03/09 08:53, , 7F
不讀屬性不知道值被換掉 但不知道值被換掉就讀不到屬性...
03/09 08:53, 7F

03/09 08:54, , 8F
xml 只該描述它描述的東西 描述 xml 的是另一個東西
03/09 08:54, 8F

03/09 09:51, , 9F
用CDATA包起來
03/09 09:51, 9F

03/09 13:55, , 10F
換成那些字元不就是 encode 了 , 解開那些字元不就是decode
03/09 13:55, 10F

03/09 13:55, , 11F
何必 - -;;...
03/09 13:55, 11F

03/09 18:01, , 12F
非常感謝各位的意見 看來是我對目前xml的標準還不夠了解
03/09 18:01, 12F
文章代碼(AID): #1BbInkyk (Web_Design)
文章代碼(AID): #1BbInkyk (Web_Design)