国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁/技術文章
文章詳情頁

這是用Java進行XML解析的最佳庫。

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

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

DOM解析器/構建器:整個XML結構都已加載到內存中,你可以使用眾所周知的DOM方法進行處理。DOM還允許你使用Xslt轉換來寫文檔。例:

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解析器貫穿文檔并調用用戶的回調方法。存在用于文檔的開始/結束,元素等的方法。它們是在org.xml.sax.ContentHandler中定義的,并且有一個空的幫助程序類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讀取器/寫入器:與面向數據流的接口一起使用。程序會在準備好時要求下一個元素,就像游標/迭代器一樣。你也可以使用它創建文檔。閱讀文件:

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文檔的最新實現:是v2中Java 6的一部分。這使我們可以序列化文檔中的Java對象。你使用一個實現了javax.xml.bind.Unmarshaller的接口的類來閱讀文檔(你可以從JAXBContext.newInstance中獲得一個用于該類的類)。必須使用使用的類來初始化上下文,但是你只需要指定根類,而不必擔心靜態引用的類。你可以使用注釋來指定哪些類應該是元素(@XmlRootElement),哪些字段應該是元素(@XmlElement)或屬性(@XmlAttribute,這真是個驚喜!)

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); }}

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

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

解決方法

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

在@Voo回答之后,讓我再問一個-我應該使用Java的內置類還是諸如dom4j之類的任何第三方庫。優點是什么?

標簽: java
相關文章:
主站蜘蛛池模板: 亚洲欧美国产精品 | 男女免费视频 | 国产一级一国产一级毛片 | 成人久久精品一区二区三区 | 国产午夜免费视频 | 欧美成人精品久久精品 | 亚洲免费小视频 | 久久精品国产欧美日韩亚洲 | a级日韩乱理伦片在线观看 a级特黄毛片免费观看 | 丁香狠狠色婷婷久久综合 | 女让张开腿让男人桶视频 | 欧美日韩另类在线观看视频 | 人成午夜 | 精品特级一级毛片免费观看 | 亚洲国产在 | 亚洲 欧美 视频 | 欧美高清在线视频一区二区 | 欧做爰xxxⅹ性欧美大 | 国产欧美在线播放 | 成人黄色在线视频 | 日本一级毛片片在线播放 | 毛片免费在线观看 | 亚洲欧美在线播放 | 免费一区二区三区久久 | 美女扒开腿让男生桶爽网站 | 69成人免费视频 | 日韩黄色一级片 | 一级aaaaaa毛片免费同男同女 | 九九视频精品全部免费播放 | a毛片全部播放免费视频完整18 | 美国免费高清一级毛片 | 国产丶欧美丶日韩丶不卡影视 | 久久综合狠狠综合久久综合88 | 久草热在线观看 | 亚洲一区二区三区在线播放 | 欧美日韩精品一区二区视频在线观看 | 国产三级久久 | 九九线精品视频 | 美美女下面被cao爽 美女131爽爽爽做爰中文视频 | 日本韩国三级在线观看 | 韩国欧洲一级毛片免费 |