1

IIRC では、XML パーサーには DOM と SAX の 2 種類があります。SAX は、XML ドキュメントを上から下に並べ替えることなく (イベントベースで) 解析する必要がありますが、DOMは並べ替えが許可されていると思います。

あれは正しいですか?そして、xmlDocPtr返されたからの読み取りは、xmlReadFileおそらく順不同です(libxml2SAXまたはDOMのいずれかであると想定しています。それはそれ自体のものである可能性があります)。

例えば:

<!-- original document, in order -->
<xml>
    <element>1</element>
    <element>2</element>
    <element>3</element>
</xml>

<!-- document as it appears in memory (DOM) -->
<xml>
    <element>3</element>
    <element>1</element>
    <element>2</element>
</xml>
4

2 に答える 2

2

libxml2 は、DOM と SAX の両方の解析をサポートしています。その DOM パーサーは、実際には SAX パーサーの上に構築されています。したがって、DOM 出力はドキュメントの順序を維持します。DOM パーサーが XML ノードを並べ替えるという話は聞いたことがありません。

于 2013-01-08T08:47:01.283 に答える
1

一方、DOMは並べ替えが許可されていると思います。

XML 仕様では、XML 要素の順序が重要であると述べられているため、XML API は要素の順序を維持する必要があります。

補足として、ISN'T の順序付けは重要ではありませんが、属性の順序付けに使用<termdef id="dt-dog" term="dog"/>されます。<termdef term="dog" id="dt-dog"/>

http://www.w3.org/TR/REC-xml/#sec-starttags

于 2013-01-09T04:21:08.410 に答える