JavaでXMLファイルを読み取る4つの方法(コレクション)
下面小编就为大家带来一篇java读取XML文件的四种方法总结(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JAVA操作XML文档主要有四种方式,分别是DOM、SAX、JDOM和DOM4J,DOM和SAX是官方提供的,而JDOM和DOM4J则是引用第三方库的,其中用的最多的是DOM4J方式。运行效率和内存使用方面最优的是SAX,但是由于SAX是基于事件的方式,所以SAX无法在编写XML的过程中对已编写内容进行修改,但对于不用进行频繁修改的需求,还是应该选择使用SAX。
下面基于这四种方式来读取XML文件。
第一,以DOM的方式实现。
package xmls; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.File; import java.io.IOException; /** * Created by lenovo on 2017-6-3. */ public class DOMReadDemo { public static void main(String[] args){ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try{ DocumentBuilder db = dbf.newDocumentBuilder(); Document document = db.parse("src/xmls/DOM.xml"); NodeList booklist = document.getElementsByTagName("book"); for(int i = 0; i < booklist.getLength(); i++){ System.out.println("--------第" + (i+1) + "本书----------"); Element ele = (Element) booklist.item(i); NodeList childNodes= ele.getChildNodes(); for(int j = 0; j < childNodes.getLength(); j++){ Node n = childNodes.item(j); if(n.getNodeName() != "#text"){ System.out.println(n.getNodeName() + ":" + n.getTextContent()); } } System.out.println("---------------------------------"); } }catch (ParserConfigurationException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); }catch (SAXException e){ e.printStackTrace(); } } }
第二,以SAX的方式实现。
package xmls; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; /** * Created by lenovo on 2017-6-1. */ public class xmlTest2 { public static void main(String[] args){ SAXParserFactory spf = SAXParserFactory.newInstance(); try{ SAXParser sp = spf.newSAXParser(); SAXParserHandler handler = new SAXParserHandler(); sp.parse("src\\xmls\\book.xml", handler); }catch (Exception e){ e.printStackTrace(); } } }
package xmls; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; /** * Created by lenovo on 2017-6-1. */ public class SAXParserHandler extends DefaultHandler { @Override public void startDocument() throws SAXException { super.startDocument(); System.out.println("SAX解析开始"); } @Override public void endDocument() throws SAXException { super.endDocument(); System.out.println("SAX解析结束"); } @Override public void startElement(String s, String s1, String s2, Attributes attributes) throws SAXException { super.startElement(s, s1, s2, attributes); System.out.println(s2); for(int i = 0; i < attributes.getLength(); i++){ String name = attributes.getQName(i); String value = attributes.getValue(name); System.out.println("属性值:" + name + "=" + value); } } @Override public void endElement(String s, String s1, String s2) throws SAXException { super.endElement(s, s1, s2); if(s2.equals("book")){ System.out.println("-----------------------"); } } @Override public void characters(char[] ch, int start, int length) throws SAXException { super.characters(ch, start, length); String value = new String(ch, start, length); if(value.trim().equals("")){ return; } System.out.println(value); } }
第三,以JDOM的方式实现。
package xmls; import org.jdom2.Attribute; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.JDOMParseException; import org.jdom2.input.SAXBuilder; import java.io.*; import java.util.List; /** * Created by lenovo on 2017-6-2. */ public class JDOMTest { public static void main(String[] args){ SAXBuilder saxBuilder = new SAXBuilder(); InputStream in; try{ in = new FileInputStream(new File("src\\xmls\\book.xml")); Document document = saxBuilder.build(in); Element rootElement = document.getRootElement(); List<Element> bookList = rootElement.getChildren(); for(Element book: bookList){ System.out.println("第" + (bookList.indexOf(book)+1) + "本书!"); List<Attribute> attrs = book.getAttributes(); for(Attribute attr: attrs){ System.out.println(attr.getName() + "=" + attr.getValue()); } for(Element item: book.getChildren()){ System.out.println(item.getName() + ":" + item.getValue()); } System.out.println("------------------------------------"); } }catch (FileNotFoundException e){ e.printStackTrace(); }catch (JDOMException e){ e.printStackTrace(); }catch (IOException e){ e.printStackTrace(); } } }
第四,以DOM4J的方式实现。
package xmls; import org.dom4j.*; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Iterator; import java.util.List; /** * Created by lenovo on 2017-6-2. */ public class DOM4JTest { public void parseXML(){ SAXReader saxReader = new SAXReader(); try{ Document document = saxReader.read(new File("src\\xmls\\book.xml")); Element rootElement = document.getRootElement(); Iterator it = rootElement.elementIterator(); while (it.hasNext()){ Element book = (Element)it.next(); List<Attribute> attrs = book.attributes(); for(Attribute attr: attrs){ System.out.println("属性名:" + attr.getName() + "---- 属性值:" + attr.getValue() ); } Iterator cit = book.elementIterator(); while (cit.hasNext()){ Element child = (Element) cit.next(); System.out.println("子节点:" + child.getName()); } } }catch (DocumentException e){ e.printStackTrace(); } } public static void main(String[] args){ DOM4JTest dom4JTest = new DOM4JTest(); dom4JTest.parseXML(); } }
以上がJavaでXMLファイルを読み取る4つの方法(コレクション)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。
