回答
我个人比较喜欢XML::LibXML - libxml的Perl绑定。其中一个优点 - 它使用最快的XML处理库之一。下面是创建文本节点的示例:
use XML::LibXML;
my $doc = XML::LibXML::Document->new('1.0',$some_encoding);
my $element = $doc->createElement($name);
$element->appendText($text);
$xml_fragment = $element->toString();
$xml_document = $doc->toString();
而且,永远不会手动创建XML。当人们发现你所做的事情时,它会对你的健康有害。
使用XML::Code。
从CPAN
XML ::代码逃逸()
通常情况下,节点的任何内容将在再现期间被转义(即如“&”将用相应实体取代特殊符号)。呼叫逃生()零参数来防止它:
my $p = XML::Code->('p');
$p->set_text ("—");
$p->escape (0);
print $p->code(); # prints <p>—</p>
$p->escape (1);
print $p->code(); # prints <p>&#8212;</p>
use XML::Entities;
my $a_encoded = XML::Entities::numify('all', $a);
编辑:XML ::实体仅numifies HTML实体。使用HTML::Entities encode_entities($ a)代替
我不确定为什么需要转义XML文件中的文本。如果您的文件包含:
<foo>x < y</foo>
该文件不尽管尖括号泛滥的XML文件。一个XML文件必须包含有效的数据意味着这样的事情:
<foo>x < y</foo>
或
<foo><![CDATA[x < y]]></foo>
因此,无论是:
你是不是要求在XML文件中逸出的数据。相反,您需要弄清楚如何将字符数据放入XML文件中,以便生成的文件是有效的XML;或
您在XML文件中有一些数据需要转义其他一些原因。
有意详细说明一下吗?
对那些低估的人:我上面说的究竟是什么错误? – 2009-07-16 15:24:04
当你提醒他们他们的伪XML实际上不是真正的XML时,人们会生气。这很有趣...而且很伤心。无论如何,我upvoted你:) – jrockway 2009-07-16 20:29:45
在检查出由Krish推荐的XML :: Code后,我发现可以使用XML ::代码text()
函数完成此操作。例如,
use XML::Code;
my $text = new XML::Code('=');
$text->set_text(q{> & < " ' "});
print $text->code(); # prints > < & " ' "
传递'='会创建一个文本节点,它在打印时不包含标签。 注意:这只适用于文本数据。它不会正确地转义属性。
使用
XML ::发电机
需要XML ::发生器;
my $ xml = XML :: Generator-> new(':pretty',escape =>'always,''');
print $ xml-> h1(“& <>非html纯文本<> &”);
这将打印标签内的所有内容转义(不与标记冲突)。
虽然您最好使用XML::LibXML
或XML::Code
这样的模块,但您可以将文本数据封装在CDATA部分中。你只能小心不要把]]>
在它(这个顺序也不允许外 CDATA节!):
$text =~ s/\]\]>/]]>]]><![CDATA[/;
$text = "<![CDATA[$text]]>";
$xml = "<foo>$text</foo>";
至于奖金你的代码看起来更Perlish的混淆! :-)
也可以使用XML :: Simple escape_value,但不建议在新程序中使用XML :: Simple。看到这个帖子后17436965.
手工添加逃逸可以使用正则表达式(从escape_value复制)来完成:
$data =~ s/&/&/sg;
$data =~ s/</</sg;
$data =~ s/>/>/sg;
$data =~ s/"/"/sg;
- 1. Perl xml转换为word文档?
- 2. xsd文档注释中的xml应该如何转义?
- 3. 官方文档的XML内容转义?
- 4. 如何在Perl中将XML文档从Latin-1转换为UTF-8?
- 5. 使用Perl XML :: SAX修改XML文档
- 6. 转换一个XML文档转换成另一个XML文档
- 7. 如何从Perl中的示例XML文档创建模式?
- 8. 如何将XML/JSON文件转换为Lotus Notes中的文档?
- 9. 在Perl生成的XML中转义“<”
- 10. 如何在autoconf/m4中转义文本?
- 11. 如何使用perl将文本转换为XML?
- 12. 如何使用Java替换XML文档中的文本
- 13. 在PHP中生成XML文档(转义字符)
- 14. 如何在XHTML文档中嵌入XML文档?
- 15. 在Java中,如何使用转义文本而不是CDATA节打印XML文档?
- 16. 转换文本文件,XML在java中
- 17. 如何在XML文档中包含DTD
- 18. 如何在Silverlight中创建XML文档
- 19. 如何在JavaScript中克隆XML文档?
- 20. 如何在C#中读取XML文档
- 21. 转换XML文档为String
- 22. XML文档类型定义
- 23. 如何在使用Perl和Selenium的XPath文本查询中转义撇号?
- 24. Perl:如何解析无效的XML文档?
- 25. 在Roxygen2样式文档中转义“@”
- 26. 如何在Perl中修改复杂的XML文档以将其他标记添加到文本节点?
- 27. 在带有转义xml的xm文档上使用SQL Server xml.modify
- 28. Perl子文档
- 29. 转义XML文档中的特殊字符
- 30. 将XML文档转换为Powershell中的自定义类对象
什么样的“逃离”你指的是? – 2009-07-16 14:00:05
您是否试图手动创建XML输出? – 2009-07-16 17:31:47