dポイントプレゼントキャンペーン実施中!

仕事でXMLを読み込むプログラム(java)を作っています。

<text>
<sentence>1行目</sentence>
<sentence>2行目</sentence>
</text>

例ですが、上記のXMLを自分で考え、それを読み込んで順番に表示するプログラムを作ったところ上司に
「XMLの仕様では、要素は記述された順番に読み込まれるとは限らないよ」
と言われましたが、これは本当ですか?
参考になるサイトや書籍があれば教えて下さい。よろしくお願いします。

XMLの仕様の日本語訳をざっと読みましたが、よく分かりませんでした。
更に、下記の記事を読んでみましたが、これもよく理解できませんでした。
http://www.ibm.com/developerworks/jp/xml/library …

A 回答 (2件)

>「XMLの仕様では、要素は記述された順番に読み込まれるとは限らないよ」



本当です。
質問者様の参考サイトにも記述されていますが
XMLにはパーサーの読み込み順序の規定は何もありません。

従いまして、パーサーによって読み込まれたXML要素の順序性は保証されず、
使用するパーサーに完全に依存することになります。
ただ、読み込み時にわざわざ要素を入れ替えるというパーサーを今までに私は見たことがありません。
(そもそも読み込む順序をわざわざ入れ替える理由も無いですから)

ちなみにJavaならorg.w3c.domパッケージのElementクラスの
getElementsByTagNameメソッドなどは「文書順に返す」といった記述が見られますね。
(ただ、Nodeインターフェースのメソッドはそういった記述が見当たらないですけど)
    • good
    • 1
この回答へのお礼

>本当です。
>質問者様の参考サイトにも記述されていますが
>XMLにはパーサーの読み込み順序の規定は何もありません。

順序を入れ替えてもよいと書いてあるわけではないし
言語が違うとはいえ、XHTMLやHTMLの使われ方を事を考えると
ひょっとして何かの間違いでは?と思ってしまいましたが、本当だったんですね。

とても参考になりました、回答ありがとうございました。

お礼日時:2009/04/26 18:39

>「XMLの仕様では、要素は記述された順番に読み込まれるとは限らないよ」



「XMLの仕様では、要素は記述される順序は設計どおりでは無いことがある」
では無いかと ・・・

たとえば
<!--- Sample1.xml -->
<test>
  <myData>
    <node1>Data1</node1>
    <node2>Data2</node2>
  </myData>
</text>

<!--- Sample2.xml -->
<test>
  <myData>
    <node2>Data2</node2>
    <node1>Data1</node1>
  </myData>
</text>
といった具合の2つのファイルが同じように処理できなければいけない事を指摘したかったのではないかと ・・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

redfox63さんにご指摘いただいた内容の方が遙かに重要な事だと思います。
実は、上司の指摘をきっかけに
>「XMLの仕様では、要素は記述される順序は設計どおりでは無いことがある」
この点についても不安になり、プログラムを見直したところ不具合を発見した次第です。
分かってはいたつもりですが情けないかぎりです。

>「XMLの仕様では、要素は記述された順番に読み込まれるとは限らないよ」
については、書いたとおり本当かどうか知りたいのです。
もし本当なら、質問に書いたXMLを別のソフトで表示させた時
「2行目」「1行目」の順で表示された、なんて場合もある事になります。
現実にはない事だと思いますが・・・

プログラム作成の方は、既にこの問題を解消したXML設計に変更して対応しましたが
仕様について詳しく知りたいと思っておりますので、引き続きよろしくお願いします。

お礼日時:2009/04/24 10:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています