0

谁能指导我如何使用这个 escape_value()。我想转义这个字符:因为它引用了无效字符号错误。

这是我的代码

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);

提前致谢

4

2 回答 2

1

查看代码,该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 文本。然后该方法在第 1431 行value_to_xml调用该escape_string方法。

于 2013-07-03T01:27:16.527 回答
1

XML 中不允许使用 U+000C。

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

甚至没有逃脱。

使用字符引用引用的字符必须与Char.

于 2013-07-03T02:57:28.413 回答