生成高效XML:Java开发者必须掌握的技能! 大家好,我是城南。其中,常用的方法包括DOM(Document Object Model)、通过JAXB,我们可以轻松地将Java对象序列化为XML,或将XML反序列化为Java对象。每种方法各有优缺点,我们将一一介绍,并且结合实例,带你深入理解每种方法的具体应用场景。DocumentBuilder和Document对象,我们可以方便地创建和操作XML结构。
import javax. xml. bind. JAXBContext ; import javax. xml. bind. JAXBException ; import javax. xml. bind. Marshaller ; import javax. xml. bind. annotation. XmlElement ; import javax. xml. bind. annotation. XmlRootElement ; import java. io. StringWriter ; @XmlRootElement class Book { private String id; private String title; private String author; @XmlElement public String getId ( ) { return id; } public void setId ( String id) { this . id = id; } @XmlElement public String getTitle ( ) { return title; } public void setTitle ( String title) { this . title = title; } @XmlElement public String getAuthor ( ) { return author; } public void setAuthor ( String author) { this . author = author; } } public class JaxbExample { public static void main ( String [ ] args) { try { Book book = new Book ( ) ; book. setId ( "1" ) ; book. setTitle ( "Java Programming" ) ; book. setAuthor ( "John Doe" ) ; JAXBContext context = JAXBContext . newInstance ( Book . class ) ; Marshaller marshaller = context. createMarshaller ( ) ; marshaller. setProperty ( Marshaller . JAXB_FORMATTED_OUTPUT , Boolean . TRUE ) ; StringWriter writer = new StringWriter ( ) ; marshaller. marshal ( book, writer) ; System . out. println ( writer. toString ( ) ) ; } catch ( JAXBException e) { e. printStackTrace ( ) ; } } }
通过JAXB,我们可以看到如何将一个Java对象转换为XML文档。SAX(Simple API for XML)、
import org. xml. sax. helpers. AttributesImpl ; import org. xml. sax. helpers. XMLFilterImpl ; import javax. xml. transform. sax. SAXTransformerFactory ; import javax. xml. transform. sax. TransformerHandler ; import javax. xml. transform. stream. StreamResult ; import java. io. StringWriter ; public class SaxExample { public static void main ( String [ ] args) { try { SAXTransformerFactory factory = ( SAXTransformerFactory ) SAXTransformerFactory . newInstance ( ) ; TransformerHandler handler = factory. newTransformerHandler ( ) ; StringWriter writer = new StringWriter ( ) ; handler. setResult ( new StreamResult ( writer) ) ; handler. startDocument ( ) ; AttributesImpl atts = new AttributesImpl ( ) ; handler. startElement ( "" , "" , "books" , atts) ; atts. clear ( ) ; atts. addAttribute ( "" , "" , "id" , "CDATA" , "1" ) ; handler. startElement ( "" , "" , "book" , atts) ; atts. clear ( ) ; handler. startElement ( "" , "" , "title" , atts) ; handler. characters ( "Java Programming" . toCharArray ( ) , 0 , "Java Programming" . length ( ) ) ; handler. endElement ( "" , "" , "title" ) ; handler. startElement ( "" , "" , "author" , atts) ; handler. characters ( "John Doe" . toCharArray ( ) , 0 , "John Doe" . length ( ) ) ; handler. endElement ( "" , "" , "author" ) ; handler. endElement ( "" , "" , "book" ) ; handler. endElement ( "" , "" , "books" ) ; handler. endDocument ( ) ; System . out. println ( writer. toString ( ) ) ; } catch ( Exception e) { e. printStackTrace ( ) ; } } }
通过上述代码,我们可以看到SAX解析器是如何通过事件驱动的方式生成XML文档的。希望今天的分享能够帮助你更好地理解和掌握这些技术,为你的开发工作增添一份力量。在这个信息化飞速发展的时代,XML作为一种常见的数据交换格式,已经深入到我们的开发工作中。StAX(Streaming API for XML)以及JAXB(Java Architecture for XML Binding)。
import org. w3c. dom. Document ; import org. w3c. dom. Element ; import javax. xml. parsers. DocumentBuilder ; import javax. xml. parsers. DocumentBuilderFactory ; import javax. xml. parsers. ParserConfigurationException ; import javax. xml. transform. Transformer ; import javax. xml. transform. TransformerException ; import javax. xml. transform. TransformerFactory ; import javax. xml. transform. dom. DOMSource ; import javax. xml. transform. stream. StreamResult ; import java. io. StringWriter ; public class DomExample { public static void main ( String [ ] args) { try { DocumentBuilderFactory factory = DocumentBuilderFactory . newInstance ( ) ; DocumentBuilder builder = factory. newDocumentBuilder ( ) ; Document doc = builder. newDocument ( ) ; Element rootElement = doc. createElement ( "books" ) ; doc. appendChild ( rootElement) ; Element book = doc. createElement ( "book" ) ; rootElement. appendChild ( book) ; book. setAttribute ( "id" , "1" ) ; Element title = doc. createElement ( "title" ) ; title. appendChild ( doc. createTextNode ( "Java Programming" ) ) ; book. appendChild ( title) ; Element author = doc. createElement ( "author" ) ; author. appendChild ( doc. createTextNode ( "John Doe" ) ) ; book. appendChild ( author) ; TransformerFactory transformerFactory = TransformerFactory . newInstance ( ) ; Transformer transformer = transformerFactory. newTransformer ( ) ; DOMSource source = new DOMSource ( doc) ; StringWriter writer = new StringWriter ( ) ; StreamResult result = new StreamResult ( writer) ; transformer. transform ( source, result) ; System . out. println ( writer. toString ( ) ) ; } catch ( ParserConfigurationException | TransformerException e) { e. printStackTrace ( ) ; } } }
以上代码演示了如何使用DOM解析器生成一个简单的XML文档。