Xml Twig正在为多行中提供的值添加空换行符
我正在使用XML::Twig解析perl脚本中的文件。我对这个有点陌生。我在XML文件中获得了以下类型的条目(这里是示例):Xml Twig正在为多行中提供的值添加空换行符,xml,perl,twig,xml-twig,Xml,Perl,Twig,Xml Twig,我正在使用XML::Twig解析perl脚本中的文件。我对这个有点陌生。我在XML文件中获得了以下类型的条目(这里是示例): <?xml version="1.0" encoding="UTF-8"?> <mytag1 name="abc"> <mytag2>This is line 1. This is line 2. This is line 3. </mytag2> </mytag1&g
<?xml version="1.0" encoding="UTF-8"?>
<mytag1 name="abc">
<mytag2>This is line 1.
This is line 2.
This is line 3.
</mytag2>
</mytag1>
我有一些验证代码,然后生成以下类型的输出
<?xml version="1.0" encoding="UTF-8"?>
<mytag1 name="abc">
<mytag2>This is line 1.
This is line 2.
This is line 3.
</mytag2>
</mytag1>
这是一号线。
这是2号线。
这是3号线。
额外的空行正在输出中生成,我不确定出了什么问题。我试着四处搜索,但找不到关于这方面的有用信息。任何帮助都将不胜感激 删除
保留编码
选项。它是无用的,因为输入是utf-8格式的,它使模块绕过了一些解析器特性,尤其是规范化LF/CR的特性
无论如何都不应该使用它:它是Unicode没有今天那么流行的时代的遗物。它允许使用旧编码的人仍然能够处理他们的XML
谢谢ikegami 非常感谢,删除
keep_encoding
确实解决了问题,但只是想知道它会有什么影响?因为在本例中,编码是UTF-8
,但情况并非总是如此。如何生成输出?它没有显示在您的代码中。FWIW当我执行$twig->print
时,我不会得到额外的空值lines@mirod,如果原始的有CRLF行结尾呢?@ikegami,解析器将这些“规范化为单个#xA字符”()。。。哦,等等!不使用保持编码
!这就是问题所在。非常感谢,删除keep_编码确实解决了问题,但只是想知道它会有什么影响?因为在本例中,编码是“UTF-8”,但情况并非总是如此。默认情况下,输出的编码将是UTF-8,如果您提前知道编码,则可以使用过滤器'my$conv=XML::Twig::encode_convert('latin1');my$t=XML::Twig->new(output_filter=>$conv);`或者,您可以使用iconv
等单独的步骤将转换回原始编码。现在很少使用unicode以外的任何东西(在*nix中使用UTF-8,我想在windows上可能是UTF-16)。
<?xml version="1.0" encoding="UTF-8"?>
<mytag1 name="abc">
<mytag2>This is line 1.
This is line 2.
This is line 3.
</mytag2>
</mytag1>