2013-07-02 117 views

回答

1

望着code

my $xs = XML::Simple->new(KeepRoot => 1, KeyAttr => 1, ForceArray => 1); 
$xs->XMLout($filename, escape_value(`'`')); // but this is not working 
my $data = $xs->XMLin($filename); 

感謝,看來該escape_value方法接受一個字符串,並返回返回字符串在進行以下替換:

  • >>
  • <&lt;
  • &&amp;
  • "&quot;

它甚至不操縱該對象的結構。如果你直接調用它,你只是這樣做:

my $string = '"Remove quotes" & <entities> quotes'; 
my $encoded_string = $self->escape_value("$string"); 
say $encoded_string; #&quot;Remove quotes&quot; &amp; and &lt;entities&gt; quotes 

哎呀,爲什麼還要用面向對象的煩惱呢?

my $string = '"Remove quotes" & <entities> quotes'; 
my $encoded_string = XML::Simple::escape_value("$string"); 
say $encoded_string; #&quot;Remove quotes&quot; &amp; and &lt;entities&gt; quote 

它看起來像什麼,這個子程序由XMLOut本身稱爲每當選項NoEscape或者未設置或設置爲0

在代碼的第636行中,XMLOut方法正在調用value_to_xml方法。這將數據結構傳遞給XMLOut並創建一個XML文本。然後value_to_xml方法調用行1431中的escape_string方法。

1

U + 000C在XML中不允許。

Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

甚至沒能逃脫。

使用字符引用引用的字符必須匹配生產Char

+0

這就是......嗯。有趣。那麼,base64? :) – hobbs

+0

@hobbs,這是一個選項。您也可以使用更適合二進制數據的格式。 – ikegami

相關問題