小编Mon*_*ica的帖子

如何生成没有尾部“/”的XML标签?

我正在尝试制作一个 XML 文档。特别是,如下

<spirit:component xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4"
                xmlns:vendorExtensions="$IREG_GEN/XMLSchema/SPIRIT"     
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
                xsi:schemaLocation="$IREG_GEN/XMLSchema/SPIRIT/VendorExtensions.xsd 
                                    http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4 
                                    http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4/index.xsd">
Run Code Online (Sandbox Code Playgroud)

所以我为此制作了一个 perl 脚本,如下所示

use strict;
use warnings;

use Spreadsheet::ParseXLSX;
use XML::LibXML;
my $doc = XML::LibXML::Document->new('1.0', 'utf-8');
my $root = $doc->createElement('spirit:component');
#$root->appendChild($doc->createComment("JJ"));
$root->setAttribute('xmlns:spirit'=> "http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4");
$root->setAttribute('xmlns:vendorExtensions'=> "\$IREG_GEN/XMLSchema/SPIRIT");
$root->setAttribute('xmlns:xsi'=> "http://www.w3.org/2001/XMLSchema-instance");
$root->setAttribute('xsi:schemaLocation'=> "http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4 
                                            http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4 
                                            http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4/index.xsd");

$doc->setDocumentElement($root);
print $doc->toString(1);
Run Code Online (Sandbox Code Playgroud)

但问题是我得到了结果

<spirit:component xmlns:spirit="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4" xmlns:vendorExtensions="$IREG_GEN/XMLSchema/SPIRIT" xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4 &#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4 &#10;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;&#9;http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4/index.xsd"/>
Run Code Online (Sandbox Code Playgroud)

特别是,这里有两个问题&#9;,index.xsd"/>

我可以删除换行符,然后按如下方式解决它

$root->setAttribute('xsi:schemaLocation'=> "http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4 http://www.spiritconsortium.org/XMLSchema/SPIRIT/1
.4 http://www.spiritconsortium.org/XMLSchema/SPIRIT/1.4/index.xsd");
Run Code Online (Sandbox Code Playgroud)

特别是,我怎样才能/删除index.xsd"/>?我使用了错误的功能吗?

xml perl

2
推荐指数
1
解决办法
96
查看次数

标签 统计

perl ×1

xml ×1