3

その中にXMLノードを含む文字列があり、DOM解析を使用してこの文字列を処理し、ノード値を抽出してローカル変数に保存しようとしています。

String 変数に格納される XML:

<carGarage>
   <car>
      <make>Chrysler</make>
      <color>Red</color>
   </car>
   <car>
      <make>Musano</make>
      <color>Blue</color>
   </car>
</carGarage>

XML 値を抽出してローカル属性に保存する Java クラス:

public class CarGarage
{   String make, color;

    public void setMake(String make)
    { this.make = make; }

    public void setColor(String color)
    { this.color = color; }

    public void DOMparsingMethod(Node thisNode)
    { int typeOfNode = thisNode.getNodeType();
      ...
    }
}

これにアプローチする最良の方法は何ですか?私は StringBufferInputStream を見てきましたが、それは非推奨です。私は本当にかなり迷っています。

ありがとう、ルーカス。

4

5 に答える 5

2

DocumentBuilderを使用して、あらゆる種類の入力ストリームから解析することを検討してください。ファイルからあなたのようなクラスに読み込む例を次に示します。

于 2009-05-17T04:10:22.300 に答える
1

オブジェクトから xml へのバインディング ライブラリは数多くありますが、それらはまさに目的どおりに動作しますが、かなりかさばるツールになる傾向があります。

この単純な例では、dom を自分で処理するのが理にかなっています。このための組み込み Java ライブラリの justinhj の提案は良いスタートですが、jdk は通常 xml パーサーを提供しないため、舞台裏で独自の魔法のようにプラグインする必要があるため、これも時々醜くなります。

私はこの種のことのためにjdomを好む傾向があります。これは事実上 DocumentBuilder ルートと同じですが、類似しており、部分的にしか互換性がありません。

于 2009-05-17T04:29:32.693 に答える
1

DOM を使用する理由

xml を読み込んでオブジェクトに変換するだけの場合は、STAX をお勧めします。SAX は DOM よりも高速ですが、コーディングが多すぎるため、STAX の方がはるかに優れています。詳細については、以下で説明します。 https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/programming-and-development/?p=639

于 2009-05-17T04:34:15.520 に答える
1

XStreamを見ることをお勧めします。XML からオブジェクトへの変換をサポートします。XML を渡すと、必要なオブジェクトのリストが表示されます。

于 2009-05-17T06:06:03.147 に答える
0

私の経験では、DOM は SAX / STAX ほど高速ではなく、メモリ効率も良くありませんが、学習曲線が低いため、この種のことには役立ちます。DOM ドキュメントを取得したら、そのドキュメントに対して XPath クエリを使用して、個々の要素の内容を取得し、解析できます。

于 2009-05-17T05:48:30.710 に答える