2012-02-09 82 views
0

我寫了一個小腳本,它解析XML文件,刪除了一些多餘的元素,並寫入休息回使用$xml->print_to_file();一個新的XML文件。Perl的XML ::嫩枝不逃避雙引號

一切工作正常,但標籤的文本內部的雙引號,已經逃脫了"是正常的雙引號了。我沒有找到類似於escape_gt的配置來防止此行爲。有沒有這樣的配置或其他方式來保持雙引號逃脫?

我的樹枝的配置是這樣的:

my $xml = XML::Twig->new(
    twig_handlers => { 
     label => \&purge_file 
    }, 
    pretty_print => 'indented', 
    output_encoding => 'utf-8', 
    escape_gt => 1 
); 
+0

它爲什麼重要?除了被分隔用雙引號'「'和'"裏面的屬性值'的意思是完全一樣的東西(除了一個需要500個%以上字節這樣做)。 – Quentin 2012-02-09 09:36:19

+1

無論是雙引號,也不是大於需要進行轉義你。只需要在屬性值中使用雙引號[_if_屬性值是雙引號,並且比在a]之後更大]]:'是CDATA段定界符的結尾,並且由於某些原因,spec禁止它在所有其他情況。 – mirod 2012-02-09 13:59:11

回答

7

沒有理由逃避XML文本引號。雙引號只需在用雙引號引用的屬性值中轉義,我相信你會發現XML :: Twig轉義了這些。


...但它可以通過操心XML ::嫩枝的膽量:

XML::Twig::Elt::set_replaced_ents(qq{&<>"}); # "&" needs to be first. 

我建議避免使用。

+0

哦...好,我認爲這將關係在某些情況下...不管怎樣,謝謝。 – Demnogonis 2012-02-09 09:50:21

+1

更新的答案,包括解決無妨。 – ikegami 2012-02-09 09:57:21

+1

我建議對這個呢!(但良好的找到反正) – mirod 2012-02-09 13:55:33