Perl の XML::LibXML モジュールを使用して XML を処理しています。
例えば、
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<!DOCTYPE aaa PUBLIC "-//bbb//CCCC//EN" "ddd.dtd" []>
<doc>
.......
</doc>
のようなXMLに対してPerlで処理をして、
最後に
documentElement を toString して書き出しています。
しかし、この場合、DTD宣言部分を書き出すことができません。
XML::LibXMLでこの部分を取得して書き出すことはできますでしょうか。
どうぞ、よろしくお願いします。
No.1ベストアンサー
- 回答日時:
PODを見ながらやってみました。
こんな感じではないでしょうか。
#!/usr/bin/env perl
use v5.16;
use warnings;
use utf8;
use open IO => qw/:utf8 :std/;
use autodie;
use XML::LibXML;
my $string = << 'EOF';
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE aaa PUBLIC "-//bbb//CCCC//EN" "ddd.dtd" []>
<doc> ....... </doc>
EOF
my $dom = XML::LibXML->load_xml(string => $string);
my $dtd = $dom->internalSubset;
say ref $dom;
say ref $dtd;
say $dtd->toString;
「XML::LibXML::Element」には、DTDを取り出すメソッドがないくさいので、もともとの「XML::LibXML::Document」オブジェクトから「XML::LibXML::Dtd」オブジェクトを引っこ抜いてくるのが楽な気がします。
結果は下記のようになりました。
XML::LibXML::Document
XML::LibXML::Dtd
<!DOCTYPE aaa PUBLIC "-//bbb//CCCC//EN" "ddd.dtd">
僕もあまり詳しいわけではありませんので、ご参考になるかどうかわかりませんが……。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- アプリ おすすめのパスワード管理アプリを教えてください。(iOSとWindows対応) 4 2023/01/19 02:08
- その他(IT・Webサービス) 見たことのない形式で日付が表示されているのでそれを解析してほしい 3 2023/01/23 16:53
- 数学 この数学問題、スマートに解く方法を教えてください。 3 2023/01/26 23:17
- HTML・CSS 疑似要素で背景画像に指定したSVG画像の色変更 2 2023/01/30 22:45
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PerlのモジュールにWWW::Mechan...
-
LCD ディスプレイを Raspberry ...
-
ArduinoのジャイロモジュールMP...
-
Excel VBAでリンク切れをチェッ...
-
モジュールとクラスの違いって...
-
VBAでoutlook365が起動しません。
-
Excel VBAで、ユーザーフォー...
-
Wordで、分かち書きをするVBA ...
-
Excel VBA 定義されたプロージ...
-
Excelで時刻になったら知らせて...
-
powershellで関数名を変更する...
-
グラフのX,Y座標を取得したい
-
vba 標準モジュールインポート...
-
例外処理のフローチャートの記...
-
COBOLで、Shellを起動するには?
-
Perl+DBD::Oracleのエラーがわ...
-
VB.NETでの他アプリケーション...
-
VBAのモジュールについて教えて...
-
Apache2 静的・動的モジュール...
-
BASP21使用のメール送信でコマ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perl 強制終了の回避について
-
Win32でInputBoxを実装するには?
-
VHDLについてですが何がお...
-
Perl/TkでURLを既定のブラウザ...
-
LWPでHTMLが取得できないことが...
-
Perl LWPでのIPv6エラー
-
LWP::Simpleでのgetについて
-
mechanizeのタイムアウト処理に...
-
TwitterAPI1.1でGetメソッド(...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
例外処理のフローチャートの記...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
「デバイスは PRN を初期化でき...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
LCD ディスプレイを Raspberry ...
-
モジュールとは何ですか
おすすめ情報