`

JAXB与Stax

阅读更多

import javax.xml.bind.annotation.XmlRootElement; 
 
@XmlRootElement 
public class Student { 
    private int id; 
    private String name; 
    private int age; 
    private Classroom classroom; 
}

java转xml
JAXBContext ctx = JAXBContext.newInstance(Student.class); 
Marshaller marshaller = ctx.createMarshaller(); 
Student stu = new Student(1,"张三",21,new Classroom(1,"10计算机应用技术",2010)); 
marshaller.marshal(stu, System.out); 

xml转java
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>21</age><classroom><grade>2010</grade><id>1</id><name>10计算机应用技术</name></classroom><id>1</id><name>张三</name></student>"; 
JAXBContext ctx = JAXBContext.newInstance(Student.class); 
Unmarshaller um = ctx.createUnmarshaller(); 
Student stu = (Student)um.unmarshal(new StringReader(xml)); 


Stax:待处理的的xml文件
XMLInputFactory factory = XMLInputFactory.newInstance(); 
InputStream is =  TestStax.class.getClassLoader().getResourceAsStream("books.xml"); 
XMLStreamReader reader = factory.createXMLStreamReader(is); 
while(reader.hasNext()) { 
        int type = reader.next(); 
        if(type==XMLStreamConstants.START_ELEMENT) { 
            String name = reader.getName().toString(); 
            if(name.equals("book")) { 
                System.out.println(reader.getAttributeName(0)+":"+reader.getAttributeValue(0)); 
            } 
        } 


XMLInputFactory factory = XMLInputFactory.newInstance(); 
InputStream is =  TestStax.class.getClassLoader().getResourceAsStream("books.xml"); 
//基于迭代模型的操作方<br> XMLEventReader reader = factory.createXMLEventReader(is); 
 
while(reader.hasNext()) { 
    //通过XMLEvent来获取是否是某种节点类型 
    XMLEvent event = reader.nextEvent(); 
    if(event.isStartElement()) { 
        //通过event.asxxx转换节点 
        String name = event.asStartElement().getName().toString(); 
        if(name.equals("title")) { 
            System.out.print(reader.getElementText()+":"); 
        } 
        if(name.equals("price")) { 
            System.out.print(reader.getElementText()+"\n"); 
        } 
    } 


基于XPATH的处理

InputStream is = TestStax.class.getClassLoader().getResourceAsStream("books.xml"); 
//创建文档处理对象 
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
//通过DocumentBuilder创建doc的文档对象 
Document doc = db.parse(is); 
//创建XPath 
XPath xpath = XPathFactory.newInstance().newXPath(); 
//第一个参数就是xpath,第二参数就是文档 
NodeList list = (NodeList)xpath.evaluate("//book[@category='WEB']", doc,XPathConstants.NODESET); 
for(int i=0;i<list.getLength();i++) { 
    //遍历输出相应的结果 
    Element e = (Element)list.item(i); 
    System.out.println(e.getElementsByTagName("title").item(0).getTextContent()); 
分享到:
评论

相关推荐

    jaxb+stax+demo

    5. **优化性能**:JAXB和STAX的组合使得解析和生成过程更加高效,因为STAX避免了整个XML文档加载到内存中,而JAXB则简化了对象与XML之间的转换。 6. **异常处理**:在处理XML时,应妥善处理可能抛出的异常,例如`...

    stax+jaxb进行xml解析

    - 为XML元素创建对应的Java类,并使用JAXB的注解如@XmlRootElement、@XmlElement等来标记属性与XML元素之间的映射关系。 - 可以使用@XmlAccessorType注解来指定字段或属性的默认绑定规则。 3. **JAXB解析和序列化...

    JAXB与xml相互转换实例

    Java Architecture for XML Binding(JAXB)是Java平台上的一个标准技术,它...在实际工作中,开发者可以根据项目需求和团队习惯选择是否采用JAXB,或者考虑其他替代方案,如DOM、SAX、StAX或第三方库如Jackson或Gson。

    jaxb-impl.jar jaxb-api.jar jsr173_1.0_api.jar

    JAXB有时会与StAX结合使用,特别是在处理大量XML数据时,StAX可以提供更高效的性能。 此外,压缩包中还有`activation.jar`,这是一个JavaBeans Activation Framework (JAF)的实现,用于支持Java对象的激活和序列化...

    JAXB, SAX, DOM Performance

    JAXB是一种将XML数据与Java对象绑定的技术,它实现了Java对象到XML的自动序列化和反序列化。在测试1中,JAXB被用来解析一个文件,其优点在于使用方便,无需手动编写解析代码,适合于数据量适中且需要频繁进行对象-...

    jaxb-api-2.1.jar 和 jaxb-impl-2.1.8.jar

    有时候,为了完整支持JAXB功能,可能还需要其他相关库,如`activation.jar`(JavaBeans Activation Framework)和`jsr173_api.jar`(Streaming XML API,StAX)。 **注意事项** 随着Java版本的更新,JAXB在Java 9及...

    activation.jar jaxb1-impl.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jsr173_1.0

    它通常与jaxb-api.jar一起使用,以提供完整的JAXB功能。 5. **jaxb-xjc.jar**:这个库包含了XJC工具,它是JAXB编译器,可以将XML Schema转换为对应的Java源代码。通过XJC,开发者可以直接从XML Schema生成Java类,...

    android上使用 jaxb所需要的包

    JAXB是Java SDK中的一个标准API,它允许开发者将XML文档与Java对象之间进行自动的双向转换,即XML到Java对象的序列化以及Java对象到XML的反序列化。然而,值得注意的是,Android的SDK并不直接支持JAXB,因为它的API...

    JAXB的使用JAXB的使用

    3. **绑定上下文(Context)**:创建`JAXBContext`对象,它是整个JAXB操作的核心,负责管理和维护Java类型与XML Schema之间的映射关系。 4. **反序列化(Unmarshalling)**:使用`Unmarshaller`对象的`unmarshal()`...

    JAXB 利用xsd文件生成java类

    JAXB (Java Architecture for XML Binding) 是Java平台上的一个标准,用于将XML文档与Java对象之间进行绑定,实现XML数据的解析和序列化。在Java开发中,JAXB提供了一种方便的方式,允许开发者通过XML Schema (XSD) ...

    CXF-JAXB包的处理问题

    本文将深入探讨如何解决CXF与JAXB版本冲突,以及如何处理Java.lang.LinkageError,特别是当JAXB 2.1 API与2.2 API之间发生不兼容时的情况。 首先,LinkageError通常发生在类加载过程中,当试图访问的类在不同的类...

    jaxb-api-2.0.5.jar.zip

    JAXB通常与Java的其他XML处理技术一起使用,如StAX(Streaming API for XML)用于高效读写XML,DOM(Document Object Model)用于构建完整的XML树,或者SAX(Simple API for XML)用于事件驱动的XML解析。...

    最新JAXB解析XML教程

    总之,学习JAXB不仅可以帮助你理解XML与Java之间的转换机制,还能提升你在开发中处理XML数据的能力。通过深入学习和实践,你将能够熟练运用JAXB进行XML的解析和编码,提高项目开发的效率和质量。

    jaxb.zip需要增加的jar包压缩包

    本压缩包“jaxb.zip”提供了解决这一问题所需的jar包,主要针对Java开发环境,特别是与Flutter项目集成时可能遇到的依赖问题。 首先,JAXB的核心库通常包括以下组件: 1. `jaxb-api.jar`: 这是JAXB的主要API,包含...

    jaxb2.0英文文档

    **Java Architecture for XML Binding (JAXB) 2.0** 是一个Java标准,它提供了一种将XML数据与Java对象之间进行自动转换的机制。这个技术是Java平台企业版(Java EE)的一部分,也是Java标准版(Java SE)的一个可选...

    jaxb解析生成xml

    在Java开发中,JAXB是处理XML数据的一种常用工具,特别是在需要与Web服务交互或者进行数据序列化和反序列化时。 ### JAXB工作原理 JAXB的核心概念包括两个主要步骤:**绑定(Binding)** 和 ** marshalling/...

    jaxb_impl,api,xjc,jsr

    4. **jaxb-impl.jar**:这是JAXB 2.0的实现库,提供了与JAXB API对应的实现,包括XML绑定、对象转换等服务。相比于JAXB 1.0,2.0版本增加了更多功能,如注解支持,使得XML绑定更加灵活和方便。 5. **jaxb-xjc.jar**...

    stax 解析xml demo project

    在Eclipse工程中,你需要包含JAXB和STAX相关的库,通常这些库已经包含在JDK中,无需额外添加。在编写代码并运行测试时,确保正确配置了项目的构建路径和运行环境。 6. **项目文件"staxtest"** 此文件可能是该项目...

    jdom,jaxb,dom4j,dom,sax,satx解析XML

    在Java中,有多种库和技术用于解析XML文档,包括JDOM、JAXB、DOM4J、DOM、SAX和StaX。接下来我们将详细探讨这些解析方式。 1. JDOM JDOM是Java Document Object Model的简称,它为Java提供了本地化的XML API。JDOM...

Global site tag (gtag.js) - Google Analytics