2

XML ファイルからコメントを取得する方法はありますか?

コメントを含む XML ファイルがあり、このファイルの各ノードと関連するコメントに基づいてユーザー インターフェイスを構築する必要があります。

それらのコメントを取得する方法が見つからないようです。simpleXML を使用してそれらの「一部」を取得できましたが、ルート ノードでは機能せず、かなり奇妙な動作をしていました...一部のコメントは独自のノードに配置され、一部は子として残され、すべてコメントは同じノードに入れられました...これが意味をなすかどうかはわかりません:)要点は、simpleXMLがコメントの構造を壊し、私のニーズには合いませんでした。

4

3 に答える 3

2

XMLReaderを使用して、すべてのノードを読み取り、コメントを引き出すことができます。ノードを引き出すだけで、コメントがxmlノードの内部、下、または上にある場所を考慮していないため、開始するためのサンプルコードをいくつか含めました。

$comments = '';
$xml =<<<EOX
<xml>
    <!--data here -->
    <data>
        <!-- more here -->
        <more />
    </data>
</xml>
EOX;

$reader = new XMLReader();
$reader->XML($xml);

while ($reader->read()) {
  if ($reader->nodeType == XMLReader::COMMENT) {
      $comments .= "\n".$reader->value;
  }
}

$reader->close();

echo "all comments below:\n-------------------".$comments

期待される出力は次のとおりです。

all comments below:
-------------------
 data here
 more here

したがって、コメントの値(ではなく<!-- -->)と空白だけが使用されます。

于 2009-02-05T16:14:00.547 に答える
0

simpleXml は何かをすばやく取得するのに適していますが、制限があります。代わりに DOM パーサーを使用してください。または、この場合は、おそらくイベント ベースのもの (SAX または XmlReader) です。

于 2009-02-05T10:48:43.170 に答える