色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術(shù)文章
文章詳情頁

這是用Java進(jìn)行XML解析的最佳庫。

瀏覽:143日期:2024-04-14 16:06:30
如何解決這是用Java進(jìn)行XML解析的最佳庫。?

實(shí)際上,Java支持4種開箱即用地解析XML的方法:

DOM解析器/構(gòu)建器:整個(gè)XML結(jié)構(gòu)都已加載到內(nèi)存中,你可以使用眾所周知的DOM方法進(jìn)行處理。DOM還允許你使用Xslt轉(zhuǎn)換來寫文檔。例:

public static void parse() throws ParserConfigurationException, IOException, SAXException { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); factory.setIgnoringElementContentWhitespace(true); DocumentBuilder builder = factory.newDocumentBuilder(); File file = new File('test.xml'); Document doc = builder.parse(file); // Do something with the document here.}

SAX Parser:僅讀取XML文檔。Sax解析器貫穿文檔并調(diào)用用戶的回調(diào)方法。存在用于文檔的開始/結(jié)束,元素等的方法。它們是在org.xml.sax.ContentHandler中定義的,并且有一個(gè)空的幫助程序類DefaultHandler。

public static void parse() throws ParserConfigurationException, SAXException { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); SAXParser saxParser = factory.newSAXParser(); File file = new File('test.xml'); saxParser.parse(file, new ElementHandler()); // specify handler}

StAx讀取器/寫入器:與面向數(shù)據(jù)流的接口一起使用。程序會(huì)在準(zhǔn)備好時(shí)要求下一個(gè)元素,就像游標(biāo)/迭代器一樣。你也可以使用它創(chuàng)建文檔。閱讀文件:

public static void parse() throws XMLStreamException, IOException { try (FileInputStream fis = new FileInputStream('test.xml')) {XMLInputFactory xmlInFact = XMLInputFactory.newInstance();XMLStreamReader reader = xmlInFact.createXMLStreamReader(fis);while(reader.hasNext()) { reader.next(); // do something here} }}

撰寫文件:

public static void parse() throws XMLStreamException, IOException { try (FileOutputStream fos = new FileOutputStream('test.xml')){XMLOutputFactory xmlOutFact = XMLOutputFactory.newInstance();XMLStreamWriter writer = xmlOutFact.createXMLStreamWriter(fos);writer.writeStartDocument();writer.writeStartElement('test');// write stuffwriter.writeEndElement(); }}

JAXB:讀取XML文檔的最新實(shí)現(xiàn):是v2中Java 6的一部分。這使我們可以序列化文檔中的Java對(duì)象。你使用一個(gè)實(shí)現(xiàn)了javax.xml.bind.Unmarshaller的接口的類來閱讀文檔(你可以從JAXBContext.newInstance中獲得一個(gè)用于該類的類)。必須使用使用的類來初始化上下文,但是你只需要指定根類,而不必?fù)?dān)心靜態(tài)引用的類。你可以使用注釋來指定哪些類應(yīng)該是元素(@XmlRootElement),哪些字段應(yīng)該是元素(@XmlElement)或?qū)傩裕ˊXmlAttribute,這真是個(gè)驚喜!)

public static void parse() throws JAXBException, IOException { try (FileInputStream adrFile = new FileInputStream('test')) {JAXBContext ctx = JAXBContext.newInstance(RootElementClass.class);Unmarshaller um = ctx.createUnmarshaller();RootElementClass rootElement = (RootElementClass) um.unmarshal(adrFile); }}

撰寫文件:

public static void parse(RootElementClass out) throws IOException, JAXBException { try (FileOutputStream adrFile = new FileOutputStream('test.xml')) {JAXBContext ctx = JAXBContext.newInstance(RootElementClass.class);Marshaller ma = ctx.createMarshaller();ma.marshal(out, adrFile); }}

從一些舊的演講幻燈片中無恥地復(fù)制了示例;-)

編輯:關(guān)于“我應(yīng)該使用哪個(gè)API?”。好吧,這取決于-并非所有API都具有與你看到的功能相同的功能,但是如果你可以控制用于映射XML文檔的類,那么JAXB是我個(gè)人最喜歡的,非常優(yōu)雅和簡(jiǎn)單的解決方案(盡管我沒有將其用于非常大的文檔,可能會(huì)有點(diǎn)復(fù)雜)。SAX也非常易于使用,如果你沒有充分的理由使用它,那就不要使用DOM-我認(rèn)為舊的,笨拙的API。我認(rèn)為沒有任何現(xiàn)代的第三方庫具有STL所缺少的任何特別有用的功能,并且標(biāo)準(zhǔn)庫具有通常的優(yōu)點(diǎn),即它們經(jīng)過了嚴(yán)格的測(cè)試,記錄和穩(wěn)定。

解決方法

我正在搜索Java庫以解析XML(復(fù)雜的配置和數(shù)據(jù)文件),我用Google搜索了一下,但除了dom4j之外都找不到(似乎他們正在V2上工作)。不喜歡它,其他有關(guān)XML的Apache項(xiàng)目似乎處于hibernate狀態(tài)。我還沒有獨(dú)自評(píng)估dom4j,只是想知道-Java是否有其他(良好)開源xml解析庫?您對(duì)dom4j的體驗(yàn)如何?

在@Voo回答之后,讓我再問一個(gè)-我應(yīng)該使用Java的內(nèi)置類還是諸如dom4j之類的任何第三方庫。優(yōu)點(diǎn)是什么?

標(biāo)簽: java
相關(guān)文章:
主站蜘蛛池模板: 国产成人香蕉在线视频网站 | 日本一区二区三区四区五区 | 99re热这里只有精品视频 | 目韩一区二区三区系列片丶 | 欧美一级高清片在线 | 精品国产一区二区三区久久 | 日本久久综合 | 一区二区三区欧美 | 亚洲风情第一页 | 成人自拍视频 | 亚洲天堂视频网 | 特级毛片a级毛免费播放 | 99在线视频精品费观看视 | 久久在线免费观看视频 | 日本成aⅴ人片日本伦 | 亚洲高清无在码在线无弹窗 | 色噜噜狠狠大色综合 | 中文字幕在线观看不卡视频 | 国产精品久久久久无码av | 久久欧美久久欧美精品 | 在线成人免费视频 | 国产区香蕉精品系列在线观看不卡 | 97视频在线视频 | 午夜影院啪啪 | 免费香蕉成视频成人网 | 久久久毛片免费全部播放 | 一级特黄aaa大片在线观看 | 国产三级小视频在线观看 | 国产91网址 | 国产农村乱子伦精品视频 | 色偷偷亚洲女人天堂观看欧 | 538prom精品视频在放免费 | 美女大片高清特黄a大片 | 神马午夜在线 | 亚洲国产成人久久综合一区77 | 日本成人在线视频网站 | 福利91 | 亚洲一区二区精品 | 久草在线网址 | 一区二区三区免费视频观看 | 纯欧美一级毛片_免费 |