Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Twig正在为多行中提供的值添加空换行符_Xml_Perl_Twig_Xml Twig - Fatal编程技术网

Xml Twig正在为多行中提供的值添加空换行符

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::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>
我有一些验证代码,然后生成以下类型的输出

<?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>