gpt4 book ai didi

xml - JAXB 中 UnMarshaller 和 Parser 的区别

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:08 45 4
gpt4 key购买 nike

谁能解释一下 JAXB 中 UnMarshaller 和 Parser 的区别。我读过 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);

最佳答案

您的两个示例都将解析 XML 作为第一步。他们在接下来发生的事情上有所不同。 “unmarshaller”将解析器的输出转换为类定义与 XML 结构相匹配的 Java 对象。第二个示例将解析器的输出转换为 XML 的直接树表示。

术语“解析器”在 XML 世界中被滥用。它经常用于描述在解析数据后处理数据的应用程序,而不仅仅是解析器组件本身。在您的情况下,您正在将(解析器加解码器)与(解析器加树构建器)进行比较。

关于xml - JAXB 中 UnMarshaller 和 Parser 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17755736/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com