【问题标题】:Perl XML Simple XMLOut encoding problem and losing newlinesPerl XML Simple XMLOut 编码问题和丢失换行符
【发布时间】:2011-08-25 12:10:41
【问题描述】:

我遇到了一些麻烦。我正在编写一个从欧洲议会获取新闻的脚本。它从例如获取内容

http://www.europarl.europa.eu/sides/getDoc.do?pubRef=-//EP//TEXT+IM-PRESS+20110401STO16789+0+DOC+XML+V0//BG

我用以下代码保存内容:

my $fh;
open($fh, ">","articles/".$article{"ref"}.".xml");
    XMLout($ref, OutputFile => $fh, XMLDecl=>"<?xml version='1.0' encoding='utf-8' ?>", KeyAttr=>["lang"]);
close($fh);

这是我第一次这样做的时候。但是,当我通过 XMLin 再次读取文件时,它会丢失换行符,并且根据写入的内容,一些字符也会出现缺陷。

这是一个示例脚本:

use XML::Simple;

my $ref=XMLin("articles/20110401STO16789.xml");
open(my $fh, ">test.xml");
XMLout($ref, OutputFile => $fh, XMLDecl=>"<?xml version='1.0' encoding='utf-8' ?>", KeyAttr=>["lang"]);
close($fh);

你知道为什么会出现这个问题吗?

我还将脚本以及示例脚本和两个 xml 文件上传到: http://www.stephan-muller.com/euronews.zip

提前感谢您的帮助!

【问题讨论】:

  • 用一堆额外的点和双引号混淆是次优的,所以不要这样做! open(my $fh, '>', "articles/$article{ref}.xml";

标签: xml perl utf-8


【解决方案1】:

不要将内容放在属性值中。将内容放入元素内容中。那里的空白很重要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    • 2011-01-25
    • 2012-09-27
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多