4

UnMarshaller と JAXB のパーサーの違いを説明してください。UnMarshaller を使用して XML ドキュメントから値を取得するように読みました。パーサーも同じことをします。どなたか違いを説明してください。

例: 以下の例のzoo.xmlを検討してください

<zoo>
 <zooName>Vandalur Zoo</zooName>
  <zooId>12321</zooId>
  <animals>
   <animal>
    <animalName>Lion</animalName>
  <animalType>Wild</animalType>
</animal>

UnMarshaller を使用して、

JAXBContext jaxbContext = JAXBContext
      .newInstance("com.javapapers.xml.jaxb");
  Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
  JAXBElement<?> zoo = (JAXBElement<?>) unmarshaller
      .unmarshal(new FileInputStream("zoo.xml"));
  ZooInfo zooInfo = (ZooInfo) zoo.getValue();

パーサーの使用:

File fXmlFile = new File("zoo.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
4

2 に答える 2

6

どちらの例でも、最初のステップとして XML を解析する必要があります。次に何が起こるかが異なります。「アンマーシャラー」は、パーサーの出力を、クラス定義が XML の構造と一致する Java オブジェクトに変換します。2 番目の例では、パーサーの出力を XML の直接ツリー表現に変換します。

「パーサー」という用語は、XML の世界では乱用されています。これは、パーサー コンポーネント自体だけでなく、データが解析された後にデータを処理するアプリケーションを説明するためによく使用されます。あなたの場合、(パーサーとアンマーシャラー)と(パーサーとツリービルダー)を比較しています。

于 2013-07-20T13:58:16.600 に答える
2

「非整列化」は、XML データから選択したクラスのオブジェクトのグラフを作成します。これは、シリアライズされたオブジェクトの読み取りに似ています。

パーサーは XML コンテンツにテキストとしてアクセスするだけで、要素に追加の意味を与えることはできません。

于 2013-07-19T21:34:34.047 に答える