
お世話になります。
Perlを使って以下のようなXMLドキュメントを読み込み、テキストファイルの出力を行いたいと思って、正規表現等を使ってプログラムを作ってはいましたが、なかなかうまく行かず、行き詰まってしまいました。
~~読み出すファイルのタグ~~
<info num = 1>
<name>namae1</name>
<nunber>10</number>
</info>
<info num =2>
<name>namae2</name>
<nunber>25</number>
</info>
・
・
~~終了~~
上記で読み出したい要素は、それぞれの<info>タグ内の<name>と、<nunber>のタグ内の要素です。
そして、その要素をテキストファイルに出力する。というようなプログラムを考えております。
事情により、出来れば、Perlのモジュールを使わずに正規表現などにて取り出したいと思っていますが、楽な方法が有ればその方法もおしえていただければと思います。
使用目的は、ローカル上でXMLドキュメント内のデータを抽出することです。
何か良い方法が有れば、ご教授いただけると助かります。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> XML用のライブラリって標準だったかな?)
corelist XML
XML was not in CORE (or so I think)
corelist XML::Simple
XML::Simple was not in CORE (or so I think)
corelist XML::Parse
XML::Parse was not in CORE (or so I think)
コアモジュール(標準添付)ではないですね。
#5.8.8の場合
うまくいかないってのはたぶん改行を含んでいるのに sオプションつけてないとか、
最長一致で次の要素まで飲み込んでるとか
そんな理由だと思いますが
自前で正規表現でゴリゴリやるなってのには賛成です。
No.1
- 回答日時:
>Perlのモジュールを使わずに正規表現などにて
個人的には「止めとけ、せめてXML DOMを経由しろ」と思っている。
ので
>事情により、
聞かせて。(管理者が自分でなくモジュールを追加できないとか・・・。XML用のライブラリって標準だったかな?)
====================
やめとけっていった理由だけど
<root>
<info num ="1">
<name>namae1</name>
<number>10</number>
</info>
<info num="2">
<name>namae2</name>
<number>25</number>
</info>
<info num="3">
<name><!-- </name><name> --></name>
<number>25</number>
</info>
<info num="4">
<name><![CDATA[ </name><name> ]]></name>
<number>25</number>
</info>
<info num="5">
<name><</name>
<number>25</number>
</info>
<info num="6">
<name>␇</name>
<number>25</number>
</info>
<info num="7">
<name>*</name>
<number>25</number>
</info>
<info num="8">
<name><![CDATA[</name><!-- <name> --> ]]></name>
<number>25</number>
</info>
<info num="8">
<name><![CDATA[</name><!-- <name> * ]]></name>
<number>25</number>
</info>
<info num="9">
<name>>-- > </name>
<number>25</number>
</info>
<info num ='10"'>
<name>namae1</name>
<number>10</number>
</info>
<info num ="11'">
<name>namae1</name>
<number>10</number>
</info>
</root>
<!--
どこのパーザ経由したかわかんない状態だと
XMLファイルがどういう風になっているかわからないし・・・
(サンプルはかなりというか物凄く意地悪に作ってますが)
どうでもいいけど CDATAマーク区間ならまだしも,#PCDATA中にも]]>って出現できないんだね。初めて知った。
上のように要素中に文字参照があった場合
ソースのまま取り出すべきか,展開かますべきか・・・とか
考えなきゃいけないことがたくさん
-->
この回答への補足
回答ありがとうございます。
事情というのは・・・
>(管理者が自分でなくモジュールを追加できないとか・・・。)
ご指摘の通り、似たような事情ですが、管理者が自分でないことでモジュール追加変更などの設定変更が自由に出来ないことと、作ったPerl自体をローカルで実行したいと考えているからです。
(支援ツールとして使ってもらうことを考えると、使う人の数が増えるほど、設定を行ってもらう人の数が増えるため、作った意味がないなぁと感じています。)
また、ローカルで実行することでXMLドキュメントのタグが変わったり、つかうひとによって、抽出したいタグの要素が違ったりしたときに対応できると思ったからです。(済みません。考えが甘くて・・・。)
長文失礼しました。
回答ありがとうございます。
>上のように要素中に文字参照があった場合
>ソースのまま取り出すべきか,展開かますべきか・・・とか
>考えなきゃいけないことがたくさん
確かに今考えてみるとそうですね。取り出したい要素の内容が複雑になればなるほど、モジュールを使うメリットが大きいように思います。
モジュールを使って組み直したいと思います。(XML DOMを使って組む方法がよくわかりませんが。。。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- JavaScript Javascriptを使ってQRコード読み取り、取得した情報をPOSTしたいと思っています。 1 2023/04/28 15:18
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP PHPでテキストファイルに保存した時の改行問題 1 2022/11/19 15:07
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- Perl Perlで特定文字列から特定文字列までを抜き出したい 4 2022/04/02 14:24
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XML要素をテキストファイルに出...
-
配列に値を入れたいのですが・・
-
プレースフォルダで複数の型を...
-
配列から網羅的な文字列を生成...
-
chomp( shift(@array) )
-
UWSCの終了の仕方
-
至急教えてください!!
-
配列変数に格納の仕方
-
VB.NETで素因数分解のプログラ...
-
サブルーチンの戻り値
-
明示的なオブジェクトの削除
-
perlのクラスについて
-
配列の記述
-
index関数で複数個抜き出す
-
VB.NETでFTPプログラム
-
配列表示画面方法について
-
ファイルからデータを読み込ん...
-
リファレンスをサブルーチンの...
-
変則的なスタック配列を使う
-
perlでファイルの拡張子を除い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6の公式リファレンスはありま...
-
C言語について。
-
ファイルからデータを読み込ん...
-
双方向リスト(?)
-
PerlでXMLのフィルタリング
-
変数名を任意の数だけ増やしたい。
-
Perlで縦横変換のような事をし...
-
二つの変数が同じ物を指すよう...
-
JAVAのリファレンスについて
-
HTML::TemplateのTMPL_LOOPにつ...
-
多次元配列でソートしたい
-
画面を強制的に再描画させる方法
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
VBのReturnの使い方
-
流れ図(フローチャート)が分か...
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
VBAでの一時停止と再開の方法
-
乱数の桁数指定、または範囲指定。
おすすめ情報