1

<value></value>の間に文字列を追加しようとしています。

<?xml version="1.0" encoding="UTF-8"?>
<rs:alarm-request throttlesize="100" xmlns:rs="http://url.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.url.com">
    <rs:attribute-filter>
    <search-criteria xmlns="http://www.url">
    <filtered-models>
      <equals>
        <attribute id="0x1144f50">
        <value></value>
        </attribute>
      </equals>
      </filtered-models>
    </search-criteria>
  </rs:attribute-filter>
    <!-- Models of Interest -->
    <rs:target-models>
    </rs:target-models>
</rs:alarm-request>

次のコードを使用しましたが、取得し続けています:パッケージ「XML::LibXML::NodeList」を介してオブジェクトメソッド「appendTextNode」が見つかりません

my $parser     = XML::LibXML->new();

# Insert devices MH to GETdevices_xmlbody template
my $doc = $parser->parse_file($current_working_dir.'\GETdevices_xmlbody.xml');
my $elem = $doc->findnodes('//rs:attribute-filter/search-criteria/filtered-models/equals/attribute/value');

# $elem->removeChildNodes();
$elem->appendTextNode('STRING');
4

2 に答える 2

4

あなたも使うことができますXML::Twig

の内容script.pl:

#!/usr/bin/env perl

use warnings;
use strict;
use XML::Twig;

my $twig = XML::Twig->new(
    twig_handlers => {
        '//rs:attribute-filter/search-criteria/filtered-models/equals/attribute/value' => sub {
            $_->set_text('STRING');
        },  
    },  
    pretty_print => 'indented',
)->parsefile( shift )->print;

次のように実行します。

perl script.pl xmlfile

これにより、次の結果が得られます。

<?xml version="1.0" encoding="UTF-8"?>
<rs:alarm-request throttlesize="100" xmlns:rs="http://url.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.url.com">
  <rs:attribute-filter>
    <search-criteria xmlns="http://www.url">
      <filtered-models>
        <equals>
          <attribute id="0x1144f50">
            <value>STRING</value>
          </attribute>
        </equals>
      </filtered-models>
    </search-criteria>
  </rs:attribute-filter>
  <!-- Models of Interest --> 
  <rs:target-models></rs:target-models>
</rs:alarm-request>
于 2013-09-26T20:28:59.010 に答える