回答
我個人比較喜歡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. 如何在XML文檔中提取HTML的文本版本?
- 3. perl LibXML寫XML文檔
- 4. xsd文檔註釋中的xml應該如何轉義?
- 5. 官方文檔的XML內容轉義?
- 6. 如何將word文檔轉換爲perl中的pdf文件?
- 7. XML文檔轉換
- 8. 如何在Perl中將XML文檔從Latin-1轉換爲UTF-8?
- 9. 使用Perl XML :: SAX修改XML文檔
- 10. 如何在轉換文件時從文檔中刪除XML declation
- 11. Xml文檔,轉義這個字符
- 12. 轉換一個XML文檔轉換成另一個XML文檔
- 13. 如何從Perl中的示例XML文檔創建模式?
- 14. 如何將XML/JSON文件轉換爲Lotus Notes中的文檔?
- 15. 在Perl生成的XML中轉義「<」
- 16. 如何在Perl中使用XML文件?
- 17. 如何在autoconf/m4中轉義文本?
- 18. 如何使用perl將文本轉換爲XML?
- 19. 如何用特殊字符替換XML文檔中的文本?
- 20. 如何使用Java替換XML文檔中的文本
- 21. Web Api幫助頁面 - 在xml文檔中不轉義html
- 22. 在PHP中生成XML文檔(轉義字符)
- 23. 如何將文本文件轉換爲perl中的JSON數據?
- 24. 如何在XHTML文檔中嵌入XML文檔?
- 25. 如何在C#中讀取XML文檔
- 26. 如何在XML文檔中包含DTD
- 27. 如何在Silverlight中創建XML文檔
- 28. 在Java中,如何使用轉義文本而不是CDATA節打印XML文檔?
- 29. 轉換文本文件,XML在java中
- 30. XML文檔轉換StackOverflowError
什麼樣的「逃離」你指的是? – 2009-07-16 14:00:05
您是否試圖手動創建XML輸出? – 2009-07-16 17:31:47