gpt4 book ai didi

perl - XML::LibXML 是否可以解析古怪的标签?

转载 作者:行者123 更新时间:2023-12-04 05:29:21 26 4
gpt4 key购买 nike

是否有可能获得XML::LibXML解析下面示例中显示的节点?我意识到我可能通过指定 '*' 创建了无效的 XML作为节点名称的一部分,如果有人能解释它为什么无效,我们将不胜感激:

use strict;
use warnings;
use XML::LibXML;

my $doc = XML::LibXML->createDocument;

my $quirky = XML::LibXML::Element->new( 'YAK*' );
$quirky->appendText( 'Important Data' );

$doc->setDocumentElement( $quirky );

print $doc->toString; # <?xml version="1.0"?>
# <YAK*>Important Data</YAK*>

my $data = XML::LibXML
->new
->parse_string( $doc->toString );

输出:
<?xml version="1.0"?>
<YAK*>Important Data</YAK*>
:2: parser error : error parsing attribute name
<YAK*>Important Data</YAK*>
^
:2: parser error : attributes construct error
<YAK*>Important Data</YAK*>
^
:2: parser error : Couldn't find end of Start Tag YAK line 2
<YAK*>Important Data</YAK*>
^
:2: parser error : Extra content at the end of the document
<YAK*>Important Data</YAK*>
^

最佳答案

如果您打开 recover,它将尝试工作选项——

my $parser = XML::LibXML->new;
$parser->recover_silently(1);
my $doc2 = $parser->parse_string( $doc->toString );
print $doc2->toString;

但是,如您所见,虽然它可以解析无效文档,但它不能/不会往返一次——
<?xml version="1.0"?>
<YAK/>

关于perl - XML::LibXML 是否可以解析古怪的标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12820049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com