XML :: LibXML :: Readerで属性名のリストを取得するにはどうすればよいですか?

属性に多くのデータがある可能性のあるXMLノードを処理しようとしています。属性のリストを取得したいのですが、XML :: LibXML :: Readerでそれを実現する方法がわかりませんか?

を使用attributeCountすると、属性の数を取得でき、を使用getAttributeNoしてそれら反復処理できますが、これにより、属性名ではなく、値のみが取得されます

のようなものを見たかったのですがgetAttributes、そのような属性の方法はありません

サンプルコード:

use strict; use warnings; use 5.010;

use XML::LibXML::Reader;

my $reader = XML::LibXML::Reader->new(IO => \*DATA)
    or die "Cannot read from \\*DATA\n";

while ($reader->read) {
  processNode($reader);
}

sub processNode {
  my $reader = shift;


  if ( $reader->name eq 'item' ) {
    my $count = $reader->attributeCount; 
    say "item has $count attributes";

    for (my $i = 0; $i < $count; $i++) {
      say $reader->getAttributeNo( $i );
    }

    # this would my desired way to access attributes:
    # for my $attr ( $reader->getAttributes ) { 
    #   say "$attr ". $reader->getAttribute( $attr );
    # }
  }
}

__DATA__
<items>
  <item code="PK7000346" name="Lucky" class="MUU" purchaseprice="0.2983" object="UPK" hasvariants="0" ts="2019-06-19T20:04:47"/>
</items>

必要な出力は、次のようなハッシュまたは名前/値のペアです。

code PK7000346
name Lucky
class MUU
purchaseprice 0.2983
object UPK
hasvariants 0
ts 2019-06-19T20:04:47
疾患

ノードの浅いコピーを使用します。

if ($reader->name eq 'item'
    && $reader->nodeType == XML_READER_TYPE_ELEMENT
) {
    for my $attr ($reader->copyCurrentNode(0)->getAttributes) {
        say join '=', $attr->name, $attr->value;
    }
}

XML :: LibXML :: ElementにXML :: LibXML :: NodeにgetAttributes文書化されていないようですを使用するか、要素をハッシュ参照として扱い、そのキーを要求することもできます。attributes

    my $item = $reader->copyCurrentNode(0);
    for my $attr (keys %$item) {
        say join '=', $attr, $item->{$attr};
    }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

libxml cライブラリを使用してXMLで属性を取得するにはどうすればよいですか?

分類Dev

update-perl-sax-parsersを実行してXML :: LibXML :: Documentを正しくインストールするにはどうすればよいですか?

分類Dev

PerlのXML :: LibXMLを使用してXDMドキュメント内の特定のノードを見つけるにはどうすればよいですか?

分類Dev

XML :: LibXMLを使用してXMLを作成するときに追加するノードを作成するにはどうすればよいですか?

分類Dev

gokogiri(libxml2)を使用してネームスペースでxmlを解析するにはどうすればよいですか?

分類Dev

XML :: LibXMlのfindvaluesからフェッチされた値を区切り文字で区切るにはどうすればよいですか?

分類Dev

XML :: LibXML、名前空間、findvalue

分類Dev

XML :: LibXMLでXMLノード属性を一覧表示する方法は?

分類Dev

PerlのXML :: Libxmlシリアライザーをutf-8エンコーディングを使用するようにするにはどうすればよいですか?

分類Dev

XML :: LibXMLを使用したXML解析

分類Dev

xpathを使用してlibxml2を使用してC ++のxmlファイルからノードと特定の要素の文字列を取得するにはどうすればよいですか?

分類Dev

シェルスクリプトでxml属性を取得するにはどうすればよいですか?

分類Dev

XML::LibXML: doc - root

分類Dev

PerlのXML :: LibXMLを使用して、同じレベルの同じタグを持つノードにアクセスするにはどうすればよいですか?

分類Dev

XML :: LibXML要素をダンプします

分類Dev

XML::LibXML::Reader need warn on schema errors instead of exit

分類Dev

Perl XML :: LibXML置換テキスト

分類Dev

XML :: LibXMLを使用する場合のXMLの正しいXPath式

分類Dev

perlとlibXMLを使用したxmlの解析

分類Dev

このXMLリクエストから日付を取得するにはどうすればよいですか?

分類Dev

XML応答の値のリストを取得するにはどうすればよいですか?

分類Dev

C#で属性名によるXMLノードフィルタリングの値を取得するにはどうすればよいですか?

分類Dev

jqueryでXml属性を取得するにはどうすればよいですか?

分類Dev

OSX ElCapitanにlibxml-rubygem 2.3.2をインストールするにはどうすればよいですか?

分類Dev

SelectNode()WITHOUT属性を使用してXMLノードのリストを取得するにはどうすればよいですか?

分類Dev

XML属性を使用して別のXML名を指定するにはどうすればよいですか?

分類Dev

perlでXML :: LibXMLを使用して要素の階層構造を取得する方法

分類Dev

ノードと属性のXML :: LibXMLを解析します

分類Dev

SnowFlakeのXMLデータからネストされたキー属性に関する情報を取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    libxml cライブラリを使用してXMLで属性を取得するにはどうすればよいですか?

  2. 2

    update-perl-sax-parsersを実行してXML :: LibXML :: Documentを正しくインストールするにはどうすればよいですか?

  3. 3

    PerlのXML :: LibXMLを使用してXDMドキュメント内の特定のノードを見つけるにはどうすればよいですか?

  4. 4

    XML :: LibXMLを使用してXMLを作成するときに追加するノードを作成するにはどうすればよいですか?

  5. 5

    gokogiri(libxml2)を使用してネームスペースでxmlを解析するにはどうすればよいですか?

  6. 6

    XML :: LibXMlのfindvaluesからフェッチされた値を区切り文字で区切るにはどうすればよいですか?

  7. 7

    XML :: LibXML、名前空間、findvalue

  8. 8

    XML :: LibXMLでXMLノード属性を一覧表示する方法は?

  9. 9

    PerlのXML :: Libxmlシリアライザーをutf-8エンコーディングを使用するようにするにはどうすればよいですか?

  10. 10

    XML :: LibXMLを使用したXML解析

  11. 11

    xpathを使用してlibxml2を使用してC ++のxmlファイルからノードと特定の要素の文字列を取得するにはどうすればよいですか?

  12. 12

    シェルスクリプトでxml属性を取得するにはどうすればよいですか?

  13. 13

    XML::LibXML: doc - root

  14. 14

    PerlのXML :: LibXMLを使用して、同じレベルの同じタグを持つノードにアクセスするにはどうすればよいですか?

  15. 15

    XML :: LibXML要素をダンプします

  16. 16

    XML::LibXML::Reader need warn on schema errors instead of exit

  17. 17

    Perl XML :: LibXML置換テキスト

  18. 18

    XML :: LibXMLを使用する場合のXMLの正しいXPath式

  19. 19

    perlとlibXMLを使用したxmlの解析

  20. 20

    このXMLリクエストから日付を取得するにはどうすればよいですか?

  21. 21

    XML応答の値のリストを取得するにはどうすればよいですか?

  22. 22

    C#で属性名によるXMLノードフィルタリングの値を取得するにはどうすればよいですか?

  23. 23

    jqueryでXml属性を取得するにはどうすればよいですか?

  24. 24

    OSX ElCapitanにlibxml-rubygem 2.3.2をインストールするにはどうすればよいですか?

  25. 25

    SelectNode()WITHOUT属性を使用してXMLノードのリストを取得するにはどうすればよいですか?

  26. 26

    XML属性を使用して別のXML名を指定するにはどうすればよいですか?

  27. 27

    perlでXML :: LibXMLを使用して要素の階層構造を取得する方法

  28. 28

    ノードと属性のXML :: LibXMLを解析します

  29. 29

    SnowFlakeのXMLデータからネストされたキー属性に関する情報を取得するにはどうすればよいですか?

ホットタグ

アーカイブ