相关疑难解决方法(0)

为什么XML ::简单劝阻?

来自以下文件XML::Simple:

不鼓励在新代码中使用此模块.其他模块可用,提供更直接和一致的接口.特别强烈建议使用XML :: LibXML.

该模块的主要问题是大量选项以及这些选项交互的任意方式 - 通常会产生意外结果.

有人可以为我澄清一下这主要原因是什么?

xml perl xml-simple

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

在保留格式的同时从文件读取XML和文件

我使用这个perl代码从文件中读取XML,然后写入另一个文件(我的完整脚本有代码来添加属性):

#!usr/bin/perl -w

use strict;
use XML::DOM;
use XML::Simple;

my $num_args = $#ARGV + 1;

if ($num_args != 2) {
  print "\nUsage: ModifyXML.pl inputXML outputXML\n";
  exit;
}

my $inputPath = $ARGV[0];
my $outputPath = $ARGV[1];

open(inputXML, "$inputPath") || die "Cannot open $inputPath \n";

my $parser = XML::DOM::Parser->new();
my $data = $parser->parsefile($inputPath) || die "Error parsing XML File";

open my $fh, '>:utf8', "$outputPath" or die "Can't open $outputPath for writing: $!\n";
$data->printToFileHandle($fh);

close(inputXML);
Run Code Online (Sandbox Code Playgroud)

但是这不会保留像换行符这样的字符.例如,这个XML:

<?xml version="1.0" encoding="utf-8"?>
<Test>
    <Notification Content="test1     testx …
Run Code Online (Sandbox Code Playgroud)

xml format perl parsing

6
推荐指数
1
解决办法
243
查看次数

提取变量并将其添加到单独的XML文件中

我有一个可以登录并返回会话ID的脚本。我需要会话ID,以便可以填充XML文件来处理它,例如,为苗圃创建工厂房间。

#!/usr/bin/perl -w

use strict;

use LWP::UserAgent;
use Data::Dumper;
use XML::Simple;

my $authenticate = do {
    open my $fh, '<', '/tmp/login.xml' or die "Could not open file: $!";
    local $/;
    <$fh>;
};

my $webpage = "https://www.example.com/api";

my $ua = LWP::UserAgent->new;
my $response = $ua->post($webpage, Content_Type => 'text/xml',
                                        Content => $authenticate);


if ( $response->is_success) {

    my $xml = new XML::Simple;
    my $x = $response->decoded_content;

    # read XML file
    my $data = $xml->XMLin($x);

    my $sessionid =  $data->{'sessionid'};

...
Run Code Online (Sandbox Code Playgroud)

我需要使用该sessionid变量并将其插入另一个如下所示的xml文件中:

<xml>
  <API>4.0</API>
  <action>plant_room_add</action> …
Run Code Online (Sandbox Code Playgroud)

xml perl

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

标签 统计

perl ×3

xml ×3

format ×1

parsing ×1

xml-simple ×1