
MSXMLを使って、属性の値に特殊文字(「<」「>」「&」など)が
大量に使われているXMLを読みこもうとすると失敗します。
正常なXMLと認識されないようです。
「Load」を使ってファイルから読み込んだ場合もダメ。
「LoadXML」で文字列から読み込んだ場合もダメ。
以下のようなVBAコードで再現できます。
---------
Dim oDom As New MSXML2.DOMDocument
With oDom.appendChild(oDom.createElement("root"))
With .Attributes.setNamedItem(oDom.createAttribute("attr"))
'.nodeValue = String(65533, "<") 'OK
.nodeValue = String(65534, "<") 'NG
End With
End With
oDom.loadXML oDom.XML '←正しく読み込めない
---------
MSXML4でもMSXML6でも同様でした。
これはバグ、それとも仕様なのでしょうか。
探してもそれらしい資料が見つかりません。
どなたかわかる方、教えてください。
補足ですが、
実は同様のXMLファイルをIE6に読ませようとした場合にも、エラー表示されます。
エラーメッセージは「エラーを特定できません」。
FireFoxだとOKのようです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
私もXSLの動作実験をしてみて、< がエラーになり困った覚えがあります。
エスケープシーケンスの > で記述し、対処しましたが、おそらく、クロスサイトスクリプティング攻撃を防ぐために、タグとマルチコマンド区切り記号などを読まないようにしているのだろうと考えています。一度、エスケープシーケンスに変換する関数か独自の置き換えルーチンを経た文字列を扱えばよろしいでしょう。
この回答への補足
回答ありがとうございます。
一応、エスケープについては考慮していました。
たとえば「<」の繰り返しを属性に入れると以下のようなXMLになりますが、
<root attr="<<<<<<<<<" />
この「<」を、ある程度以上(65534回ほど?)繰り返すと、とたんにMSXMLで読み込めない、IEでもエラーになって表示できなくなります。
いくつかの環境で試しましたが今のところ再現性があります。
ちなみに何がやりたかったかというと、属性に別のXMLデータを文字列として格納しようとしたのです。
XMLなので、結果的に「<」「>」がたくさん出てきて、(エスケープしていても)今回の現象が発生しました。
属性にそんな大きなデータを入れるな、ということなのかもしれませんが。
ただそれを裏付けるような文献を紹介していただけると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンパイル時のエラーについて...
-
勝手にdatファイルになるのです...
-
WordでURLをクリックしてそのペ...
-
裁判所から届く「訴状」は転送...
-
Beckyで手を加えずに転送の送信...
-
CSVファイルの内容がブラウザ表...
-
PDFでファイルをみたいのにw...
-
サーバーに転送したファイルが0...
-
EACでのオーディオデータ取り込...
-
ギガファイル便って女の人のエ...
-
mms~で落とした動画は絶対早送...
-
コマンドが見つかりません、予...
-
Susie関連のplugIn (ai)
-
Webページを丸ごと保存する方法
-
転送と回送の違い
-
messengerに投稿したwordファイ...
-
自作PCのデータ引っ越し
-
DNSの前方参照ゾーンについて
-
TCP環境下でのファイル破損は起...
-
FTP利用時のエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ホームページビルダーの【×】マ...
-
VB6 使用中ファイルの確認
-
thunderbardでエラーが出ます。
-
ファイルopenエラーになってし...
-
ワードがなかなか閉じないです
-
localhostで表示されない
-
local by flywheelについて
-
緊急です。 パワーポイントで p...
-
[TeX,DVI,PS,PDF]
-
コンパイル時のエラーについて...
-
ftp_getできない?
-
VBAを記述したEXCELファイルを...
-
MO-01K
-
リンカ 致命的エラーについて
-
フォルダの削除について
-
ビルダー7にて既存のHPをDL→修...
-
一度PictureBoxに表示させたフ...
-
MHTMLファイルを開いたら「有効...
-
VB6→VS2005アップグレード後 in...
-
iPhoneが復元出来ない(不明エラ...
おすすめ情報