首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在CDDATA中用Embperl包装XML?

如何在CDDATA中用Embperl包装XML?
EN

Stack Overflow用户
提问于 2015-09-17 13:58:23
回答 1查看 821关注 0票数 1

下面的XML代码($xml)需要显示在页面中:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Contact name="test" course="maths">
</Contact>

在显示页面中,我得到以下错误:

代码语言:javascript
复制
XML Parsing Error: XML or text declaration not at start of entity

而不是显示XML。

我试着删除这条线:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

它的显示是正确的。

我的问题是,我不能总是做上述步骤,因为在未来将有另一种格式。

作为一种永久的解决方案,我想将这个xml封装到CDDATA中,并在perl中试用如下:

代码语言:javascript
复制
$modified_xml = '<![CDATA['.$xml.']]>;

它显示的错误如下:

代码语言:javascript
复制
XML Parsing Error: syntax error
<![CDATA[<?xml version="1.0" encoding="UTF-8"?><Contact name="test" course="maths"></Contact>]]>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 14:37:03

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

是一个特例-它是XML声明。它必须在它自己的线路上,而且(如果有)它必须是第一行。它不是XML的一部分。

所以不,你不能像这样把它插入到CDATA中。不会有效果的。

您的错误-表明它是“不是在实体的开头”,这通常意味着您有偏离空白行。

例如:

代码语言:javascript
复制
#!/usr/bin/perl
use strict;
use warnings;

use XML::Twig;

my $xml = '
<?xml version="1.0" encoding="UTF-8"?>
<Contact name="test" course="maths">
</Contact>';

XML::Twig -> parse ( $xml );

错误有:

代码语言:javascript
复制
XML or text declaration not at start of entity at line 2, column 0, byte 1

但是:

代码语言:javascript
复制
my $xml = '<?xml version="1.0" encoding="UTF-8"?>
<Contact name="test" course="maths">
</Contact>';

XML::Twig -> parse ( $xml );

不会的。

我可以建议作为您的“修复”-首先获得有效的XML。但第二点:

代码语言:javascript
复制
$xml =~ s/\A\s*//gms;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32632214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档