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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mechanizeのタイムアウト処理に...
-
例外処理のフローチャートの記...
-
Excel VBAで、ユーザーフォーム...
-
Excel VBAでリンク切れをチェッ...
-
erf(x)とerfc(x)のカタカナ読み...
-
Excel VBA 『Call』で呼び出す...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBA 定義されたプロージ...
-
w3cの検証エラー?
-
Excel VBAで、ユーザーフォー...
-
グラフのX,Y座標を取得したい
-
本当にPublicな変数(配列で)
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
vba 標準モジュールインポート...
-
VBAProjectのモジュ...
-
acwzlibとは?
-
シャープ製品JH-WB1821 と BCG...
-
教えて下さい。
-
LCD ディスプレイを Raspberry ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VHDLについてですが何がお...
-
python wxpythonについて質問です
-
mechanizeのタイムアウト処理に...
-
Perl/TkでURLを既定のブラウザ...
-
LWPでHTMLが取得できないことが...
-
LWP::Simpleでのgetについて
-
Perl/TkのWWW::MechanizeのGET...
-
TwitterAPI1.1でGetメソッド(...
-
XML::XPathを使う
-
Perl での XML 処理での DTD 宣...
-
指定フォルダ内のファイル一括DL
-
Perlでgoogle newsのRSSを取得...
-
BEGIN{}での変数宣言
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
LCD ディスプレイを Raspberry ...
-
「デバイスは PRN を初期化でき...
-
エクセルVBAでシートモジュール...
-
VBSがコンパイルエラーになりま...
-
VBでグローバル変数を宣言するには
おすすめ情報