2010-03-08 152 views
5

我已閱讀的XML文件,並轉換成NSXMLDocument對象。但是,由於節點的字符串內容中存在「<」,因此它已被轉換爲「& lt」。所以,當我將它作爲xml文檔寫入文件時,它具有「& lt」字符。轉換&LT至<xml文檔

如何以「& lt」替換爲「<」作爲普通XML文件寫入文件。

感謝和問候, 列寧

回答

4

<字符出現在文本節點中時,它會在您將xml寫入文件時序列化爲&lt;

當您稍後閱讀的XML解析器,文件,文本節點將包含原始<字符。

你也有CDATA編碼的文本節點的選項。在這種情況下,在CDATA塊內的序列化字符是<。許多XML API不會保留CDATA和文本節點之間的任何區別。 CDATA應該被認爲是一種逃避機制,可以讓人類作者輕鬆編輯。

1

在XML的文本節點的<應被表示爲&lt;

如果要替換其寫入到XML文件之前,使用s/&lt;/</g,這將導致當您從文件中讀取解析錯誤。

0

您可以使用下面的功能做了相反的操作

用htmlspecialchars和

ヶ輛()

+0

感謝您的支持。將檢查出來。 – boom 2010-03-08 05:30:54

+0

嗨,我的代碼是在可可。你可以給其他方法來轉換它在可可,而不是htmlspecialchars和htmlentities() – boom 2010-03-08 05:34:21

+0

@Lenin:對不起,我不知道cocao – Pavunkumar 2010-03-08 05:40:37

0

時,它不是一個XML標籤的一部分<字符必須進行轉義(see here)。你真的不應該破壞XML規範...

但是,如果必須,你可以寫你的XML文檔之前執行了一招:

  1. 有一個唯一的字符串替換您的< 實例是將不會被 轉換爲您的XML解析器(您知道的東西在文件的其他位置無處)。 類似*-lt-*可能會做。
  2. 讓解析器生成文件& 保存。
  3. 閱讀文件 明文的,並與常規< 字符替換您的實例*-lt-*
  4. 重寫該文件, 翻譯由XML解析器編寫的版本。

再次,破壞XML規範是一個糟糕的主意......通過這樣做,沒有解析器將能夠讀取您的新XML文檔。

0

如果你想通過PHP更換& LT到< XML文檔中:

$xmlFile = file_get_contents("example.xml"); 

$xml= str_replace(['&lt;','&gt;'],['<','>'], $xmlFile); 

echo $xml; 

我從服務器通過XML獲得新聞提要,然後將其保存到另一個XML文件,我在歌廳結果與&lt;&gt;所以我用這種方法。這不是存儲XML的最聰明的方式,但我也不是一個大型的高級後臺。