2

xmlコードからノードのタグを保持する方法はありますか?問題の説明は次のようになります。xml入力があり、入力を照会し、照会された項目のxml出力を取得したい。

<pets>
  <dog>
    <name>Maggie</name>
    <dob>12 October 2005</dob>
    <price>75</price>
    <owner>Rosie</owner>
  </dog>
</pets>

//pets/dogPerlプログラムでアクセスすると、出力は次のようになります。

<?xml version='1.0' standalone='yes'?>
<dog>
    Maggie
    12 October 2005
    75
    Rosie
</dog>

textContentタグを保持するためのパラメータを関数に与える方法はありますか?これは、ノードをハッシュに入れて出力するサイクルコードのブロックです。

$parser = XML::LibXML->new();
$data = $parser->load_xml(string => $takeninput);
$xml = new XML::LibXML::XPathContext($data);
$i = 0;
for $node ($xml->findnodes('//pets/dog'))
  {
    $name = $node->nodeName;
    $hash{$name}[$i] = $node->textContent;
    $i++;
  }

子供のタグを保持するには?このような出力を得るには:

<?xml version='1.0' standalone='yes'?>
<dog>
    <name>Maggie</name>
    <dob>12 October 2005</dob>
    <price>75</price>
    <owner>Rosie</owner>
</dog>

回答ありがとうございます。

4

2 に答える 2

2

ライブラリは、まさにあなたが求めたことを実行しています - ノードのテキスト コンテンツを返しています。マークアップはテキスト コンテンツではないため、表示されません。

あなたが欲しいと思うのは、ノードをフォーマットされたXMLとして$node->toString返すことです。dog

きれいなレイアウトの場合は、$node->toString(1)

于 2013-03-15T13:57:39.763 に答える
0

XML::XSH2 の使用:

#!/usr/bin/perl
use warnings;
use strict;

use XML::XSH2;

xsh << '__XSH__';
    open 1.xml ;
    ls //pets/dog |> $x ;
__XSH__

print $XML::XSH2::Map::x;

出力:

<dog>
    <name>Maggie</name>
    <dob>12 October 2005</dob>
    <price>75</price>
    <owner>Rosie</owner>
  </dog>
于 2013-03-15T14:02:08.003 に答える