2013-08-20 31 views
1

就像我可以使用echo 'one two' | perl -MURI::Escape -wlne 'print uri_escape $_'進行URL編碼字符串,我該怎麼辦類似編碼字符串有效的XML的東西嗎? (我會一直使用它在有效的URL上,但我需要將它們包含在XML標記中)。perl的一個襯爲XML編碼

回答

3

下面將針對XML文本做:

perl -MHTML::Entities -CS -pe'$_ = encode_entities($_, "&<")' 

下面將通過"分隔的XML屬性做:

perl -MHTML::Entities -CS -pe'$_ = encode_entities($_, q{&<"})' 

下面將通過'分隔的XML屬性做:

perl -MHTML::Entities -CS -pe'$_ = encode_entities($_, "&<'\''")' 

一起:

perl -MHTML::Entities -CS -pe'$_ = encode_entities($_, q{&<>"'\''})' 

我包括>即使沒有必要,因爲大多數人都這麼做。

此程序假設文本將插入文檔的字符集是Unicode,這意味着它假定文檔的編碼是UTF-8,UTF-16le,UTF-16be,UTF-32le或UTF-32be 。如果文檔使用了不同的字符集,Unicode字符的字符集不存在也需要進行轉義。

該程序假設輸入和輸出是UTF-8。 (您URI編碼程序假定其輸入是UTF-8)。


但因爲你正在談論有效的URL,下面就爲XML文本,並通過"分隔的屬性做:

perl -pe's/&/&amp;/g' 

如果該值可能是用來作爲'分隔的屬性值,你需要

perl -pe"s/&/&amp;/g s/'/&apos;/g"