1

就像我可以用来echo 'one two' | perl -MURI::Escape -wlne 'print uri_escape $_'对字符串进行 url 编码一样,我该如何做类似的事情来将字符串编码为有效的 XML?(我将始终在有效的 URL 上使用它,但我需要将它们包含在 XML 标记中)。

4

1 回答 1

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"
于 2013-08-20T17:47:47.533 回答