XMLのソート方法とは?

このQ&Aのポイント
  • XMLを特定の要素でソートする方法について解説します。
  • 具体的なXMLのソート方法として、XSLを使用する方法があります。
  • Excel 2003のVBAでMSXMLを使ってXMLのソートを行うことも可能です。
回答を見る
  • ベストアンサー

XMLのソート

XMLのソート http://okwave.jp/qa/q6069815.html に間違いがあったので訂正して再質問します。 このようなXMLがあります <?xml version="1.0" encoding="UTF-8" ?> <ROOT>  <CONTENTS>   (略)  </CONTENTS>  <ITEMS>   <ITEM>    <TITLE>ABC</TITLE>    <NUMBER>10</NUMBER>   </ITEM>   <ITEM>    <TITLE>DEF</TITLE>    <NUMBER>0</NUMBER>   </ITEM>   <ITEM>    <TITLE>GHI</TITLE>    <NUMBER>100</NUMBER>   </ITEM>   <ITEM>    <TITLE>JKL</TITLE>    <NUMBER>50</NUMBER>   </ITEM>  </ITEMS> </ROOT> これを、/ITEMS/ITEM/NUMBER でソートして <?xml version="1.0" encoding="UTF-8" ?> <ROOT>  <CONTENTS>   (略)  </CONTENTS>  <ITEMS>   <ITEM>    <TITLE>DEF</TITLE>    <NUMBER>0</NUMBER>   </ITEM>   <ITEM>    <TITLE>ABC</TITLE>    <NUMBER>10</NUMBER>   </ITEM>   <ITEM>    <TITLE>JKL</TITLE>    <NUMBER>50</NUMBER>   </ITEM>   <ITEM>    <TITLE>GHI</TITLE>    <NUMBER>100</NUMBER>   </ITEM>  </ITEMS> </ROOT> というようにしたいです。 XSLなどでできるのでしょうか? Excel2003のVBAでMSXMLを使っています。

  • XML
  • 回答数1
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

http://cid-b89cb784f5346675.office.live.com/browse.aspx/TestCase/Q6069966?uc=1 字数が足らんのでファイルをひとまとめにしておいた

Trick--o--
質問者

お礼

ありがとうございます。参考にさせていただきます。

関連するQ&A

  • XMLのソート(再)

    XMLのソート(再) http://okwave.jp/qa/q6069966.html に足りない部分があったので訂正して再質問します。 このようなXMLがあります <?xml version="1.0" encoding="UTF-8" ?> <ROOT>  <CONTENTS>   (略)  </CONTENTS>  <DATASET>   <DATA1>A</DATA1>   <DATA2>B</DATA2>   (略)   <ITEMS>    <ITEM>     <TITLE>ABC</TITLE>     <NUMBER>10</NUMBER>    </ITEM>    <ITEM>     <TITLE>DEF</TITLE>     <NUMBER>0</NUMBER>    </ITEM>    <ITEM>     <TITLE>GHI</TITLE>     <NUMBER>100</NUMBER>    </ITEM>    <ITEM>     <TITLE>JKL</TITLE>     <NUMBER>50</NUMBER>    </ITEM>   </ITEMS>  </DATASET> </ROOT> これを、/ITEMS/ITEM/NUMBER でソートして <?xml version="1.0" encoding="UTF-8" ?> <ROOT>  <CONTENTS>   (略)  </CONTENTS>  <DATASET>   <DATA1>A</DATA1>   <DATA2>B</DATA2>   (略)   <ITEMS>    <ITEM>     <TITLE>DEF</TITLE>     <NUMBER>0</NUMBER>    </ITEM>    <ITEM>     <TITLE>ABC</TITLE>     <NUMBER>10</NUMBER>    </ITEM>    <ITEM>     <TITLE>JKL</TITLE>     <NUMBER>50</NUMBER>    </ITEM>    <ITEM>     <TITLE>GHI</TITLE>     <NUMBER>100</NUMBER>    </ITEM>   </ITEMS>  </DATASET> </ROOT> というようにしたいです。 XSLなどでできるのでしょうか? <DATA1>…は実際には様々なデータがあり、その中で階層になっているものもあります。 Excel2003のVBAでMSXMLを使っています。

    • ベストアンサー
    • XML
  • ソート処理

    ついこの間正規表現のことで質問させていただいたものです なんとか問題は解決しました それとは別にソート関連での質問があります 正規表現の前にソートについて質問してご回答を頂いてからそれを参考に試してみました http://oshiete1.goo.ne.jp/kotaeru.php3?q=1882190 です push で@tmpの内容を ($score,$filename,$title,$sentenceの順番に) 3.5 abc.txt あいうえお aaaaa 4.6 def.txt かきくけこ bbbbb 2.8 ghi.txt さしすせそ ccccc 5.1 jkl.txt たちつてと ddddd という風にしました このリストを @tmp = map {$_->[0]} sort {$a->[0] <=> $b->[0]} map {[$_, split /<>/]}@tmp; としたんですが結果は abc.txt あいうえお aaaaa def.txt かきくけこ bbbbb ghi.txt さしすせそ ccccc jkl.txt たちつてと ddddd 3.5 4.6 2.8 5.1 というふうになってしまいます これを スコア順に 5.1 jkl.txt たちつてと ddddd 4.6 def.txt かきくけこ bbbbb 3.5 abc.txt あいうえお aaaaa 2.8 ghi.txt さしすせそ ccccc としたいのですがうえのソースでは何がいけないんでしょうか??

    • ベストアンサー
    • Perl
  • XMLとの連携でノードの長さを取り出す方法

    PHP--------------------------------------------- $xpath = "/qq:album/img"; $xpath = mb_convert_encoding($xpath,"UTF-8","SJIS"); $x_array = $ctx->xpath_eval($xpath); $title_element = $x_array->nodeset[0]; $title = $title_element->get_attribute("title"); $title = mb_convert_encoding($title,"SJIS","UTF-8"); XML---------------------------------------------- <?xml version="1.0" encoding="EUC-JP"?> <qq:album xmlns:qq="www.phpdom.com"> <img title="ABC"> <img title="DEF"> <img title="GHI"> <img title="JKL"> </qq:album> こんにちは。 http://www.geocities.jp/xmlfirststep/dom/dom4.html のサイトを参考に、上のようなスクリプトを書きました。albumという名の親ノードの下にあるimgノードの要素titleを抜き出すものです。このimgノードをXMLで複数つくり、phpでその長さを自動で返してもらおうと思ったのですがそのやり方がわかりません。 色々なサイトを回りましたが、キーワード「length」で探してもそれらしき情報がまったく見つかりません。 どうすればノードの長さを返してもらえるのでしょうか?

    • ベストアンサー
    • PHP
  • Excelでのリンク機能関数

    シート1が以下のようにあったとします。 A B 1 No.1 abc 2 No.2 def 3 No.3 ghi 4 No.4 jkl シート2で、A1に「No.1」と記入するとB1に「abc」と表示したいのです。 A B 1 No.1 abc 2 No.2 def 3 No.3 ghi 4 No.4 jkl ↑ ↑ 手動 自動表示 このように出来る関数はありますか? また、使い方のサンプルなどもあればありがたいです。 よろしくお願いします。

  • XML::DOM / XML::XPathでソート

    XML::DOMで効率的なソートの方法はどんなものがありますでしょうか。 一応動くものは作れたのですが、効率的とは言い難く、しかも ソート項目が一意のデータでないといけないという欠点があります。 ############################################### use XML::DOM::XPath; my $xml = <<EOM; <?xml version="1.0" encoding="UTF-8" ?> <list> <item id="10">Apple</item> <item id="5">Orange</item> <item id="20">Melon</item> </list> EOM my $parser = XML::DOM::Parser->new(); my $doc = $parser->parse( $xml ); ## <item>タグの一覧を作成 my @list = $doc->findnodes('/list/item'); ## <item>タグ id属性一覧を作成 my @idlist = map{ $_->getAttribute("id") } @list; ## id属性順にソート foreach my $id ( sort{ $a<=>$b } @idlist ){ ## id属性値を指定してノードリストを取得 my @item = $doc->findnodes('/list/item[@id='.$id.']'); ## idは一意なのでリストの先頭で固定 print $item[0]->getAttribute('id')."\n"; print $item[0]->getFirstChild->getNodeValue."\n"; } ############################################### ハッシュなら sort{ $hoe{$b} <=> $hoe{$a} } keys %hoe といった方法があるのですが、XML::DOMの場合は同じようにいきません。 良い方法がありましたらお願いします。

    • ベストアンサー
    • Perl
  • エクセルで,スペースのある文字列を列ごとに分けるには?

    例えば abc def ghi jkl mno pqr という文章があったとします。 それを |abc|def|ghi| ------------- |jkl|mno|pqr| みたく,スペースのあるところで区切るにはどのようにすればよいでしょうか。教えてください。

  • エクセルで元データを残しながらコピー

    エクセル2007で複数の行にまたがってある複数のデータを楽に一つの行にまとめたい。 例 A1 abc B2 def A3 ghi C4 jkl 以下省略 このB行とC行をA行に全てまとめて移動したいのですがどのようにすればいいでしょうか。 したいこと A1 abc A2 def A3 ghi A4 jkl 以下略

  • XMLの相対パスの書き方

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <root> <info> <element> <item>Pwd</item> <value>00000000000000</value> </element> <element> <item>Name</item> <value>MyPC</value> </element> </info> </root> こういうXMLファイルの記述があり、itemがNameであるvalueを取りたいといった場合、どういうパスを記述すればよいでしょうか? VBで動くようにしたいです。 よろしくお願いします。

    • ベストアンサー
    • XML
  • perl言語 XMLの入れ子の取得方法

    下記のようなツリー状のXMLから、親となっている情報と、親の入れ子となっている子の情報を分けて取得したいのですが、どのようにすれば取得できるのでしょうか? --------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:review="http://www.test.com/"> <channel> <title>test</title> <language>ja</language> <item> <number>1</number> <title>親レビュータイトル</title> <item> <number>3</number> <title>子レビュー2タイトル</title> </item> <item> <number>2</number> <title>子レビュー1タイトル</title> </item> </item> </channel> </rss> --------------------------------------- XML解析あたりから悩んでいるので、サンプルなどあれば、教えていただければと思います。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • excelでデータの位置を変えたい

    abcdefghijklmn~と続いているものを abc def ghi jklと変えることはできるでしょうか? よろしくお願いします