JDOM は、XML ドキュメントの読み取り、変更、生成をより便利に行うための非常に優れた Java XML API を提供します。 JDOM は、ユーザーが SAX、DOM、STAX イベント解析、STAX ストリーム解析から特定の実装を選択できるラッパー クラスも提供します。
このチュートリアルでは、JDOM を使用して XML ファイル情報を読み取り、それを Java オブジェクトに変換する方法を学びます。
JDOM は標準の JDK の一部ではないため、JDOM を使用するには、公式 Web サイトから JDOM バイナリ パッケージをダウンロードし、JDOM Jar パッケージをプロジェクトのクラスパスに追加する必要があります。
JDOM は、基礎となる XML 解析 API を選択するためのラッパー クラスを提供します。これは、JDOM Document オブジェクトを取得するために使用できる 4 つの重要なクラスを提供します。 JDOM Document オブジェクトは、ルート要素、子要素のリスト、属性値などを取得するための非常に便利なメソッドを提供します。
JDOM の重要なクラス: org.jdom2.input.DOMBuilder:
DOM 解析メカニズムを使用して XML を解析し、JDOM Document オブジェクトに変換します。 org.jdom2.input.DOMBuilder:
使用DOM解析机制解析XML并将它转换为JDOM Document对象。 org.jdom2.input.SAXBuilder:
使用SAX解析机制解析XML并转换为JDOM Document。 org.jdom2.input.StAXEventBuilder
和org.jdom2.input.StAXStreamBuilder
作用和前面两个类似,不再赘述。 org.jdom2.Document
JDOM Document对象提供有用的方法获取根元素,读取或修改元素内容等操作,我们将要使用它获取XML的根元素。 org.jdom2.Document
提供了有用的方法来获取子元素集合,获取子元素值,获取属性值等操作。
接下来我们开始使用案例程序读取XML文件并生成Java对象。
employees.xml
<?xml version="1.0" encoding="UTF-8"?><Employees> <Employee id="1"> <age>29</age> <name>Pankaj</name> <gender>Male</gender> <role>Java Developer</role> </Employee> <Employee id="2"> <age>35</age> <name>Lisa</name> <gender>Female</gender> <role>CEO</role> </Employee> <Employee id="3"> <age>40</age> <name>Tom</name> <gender>Male</gender> <role>Manager</role> </Employee></Employees>
该xml文件存放员工信息,我们使用Employee类表示员工。
package com.journaldev.xml;public class Employee { private int id; private String name; private String gender; private int age; private String role; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } @Override public String toString() { return "Employee:: ID="+this.id+" Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender + " Role=" + this.role; } }
接着在测试程序中使用DOMBuilder读取XML文件生成Employee对象集合。
JDOMXMLReader.java
package com.journaldev.xml.jdom; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.DOMBuilder; import org.jdom2.input.SAXBuilder; import org.jdom2.input.StAXEventBuilder; import org.jdom2.input.StAXStreamBuilder; import org.w3c.dom.Document; import org.xml.sax.SAXException; import com.journaldev.xml.Employee; public class JDOMXMLReader { public static void main(String[] args) { final String fileName = "/Users/pankaj/employees.xml"; org.jdom2.Document jdomDoc; try { //we can create JDOM Document from DOM, SAX and STAX Parser Builder classes jdomDoc = useDOMParser(fileName); Element root = jdomDoc.getRootElement(); List<Element> empListElements = root.getChildren("Employee"); List<Employee> empList = new ArrayList<>(); for (Element empElement : empListElements) { Employee emp = new Employee(); emp.setId(Integer.parseInt(empElement.getAttributeValue("id"))); emp.setAge(Integer.parseInt(empElement.getChildText("age"))); emp.setName(empElement.getChildText("name")); emp.setRole(empElement.getChildText("role")); emp.setGender(empElement.getChildText("gender")); empList.add(emp); } //lets print Employees list information for (Employee emp : empList) System.out.println(emp); } catch (Exception e) { e.printStackTrace(); } } //Get JDOM document from DOM Parser private static org.jdom2.Document useDOMParser(String fileName) throws ParserConfigurationException, SAXException, IOException { //creating DOM Document DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder; dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(new File(fileName)); DOMBuilder domBuilder = new DOMBuilder(); return domBuilder.build(doc); } }
如你所见,这里我使用DOM解析包装类获取JDOM Document对象。
运行程序输出:
Employee:: ID=1 Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: ID=2 Name=Lisa Age=35 Gender=Female Role=CEOEmployee:: ID=3 Name=Tom Age=40 Gender=Male Role=Manager
我们同样可以使用SAX和STAX解析机制来完成,我们可以使用下面方法完成:
/Get JDOM document from SAX Parserprivate static org.jdom2.Document useSAXParser(String fileName) throws JDOMException, IOException { SAXBuilder saxBuilder = new SAXBuilder(); return saxBuilder.build(new File(fileName)); } //Get JDOM Document from STAX Stream Parser or STAX Event Parserprivate static org.jdom2. Document useSTAXParser(String fileName, String type) throws FileNotFoundException, XMLStreamException, JDOMException{ if(type.equalsIgnoreCase("stream")){ StAXStreamBuilder staxBuilder = new StAXStreamBuilder(); XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new FileInputStream(fileName)); return staxBuilder.build(xmlStreamReader); } StAXEventBuilder staxBuilder = new StAXEventBuilder(); XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(new FileInputStream(fileName)); return staxBuilder.build(xmlEventReader); }
运行程序将会得到相同的输出,因为我们只是使用不同的包装类,但是获取的JDOM Document对象相同。
使用JDOM的好处是我们可以很方便的切换底层的解析机制而处理代码不发生改变。
JDOM 提供了非常优秀的Java XML API来更方便的读取、修改、生成XML文档。JDOM还提供了包装类供用户从SAX、DOM、STAX事件解析、STAX流解析中选择具体的实现。
在本教程中,我们一起学习使用JDOM將读取XML文件信息,并转换为Java对象。
JDOM并非标准JDK的一部分,因此使用JDOM需要从官方网站中下载JDOM的二进制包,下载后將JDOM的Jar包添加到工程的classpath中即可。
JDOM提供了包装类供我们选择底层的XML解析API,它提供了四个重要的类,我们可以使用它获取JDOM的Document对象。JDOM Document对象提供非常有用的方法来获取根元素,子元素列表,属性值等。
JDOM的重要的类: org.jdom2.input.DOMBuilder:
使用DOM解析机制解析XML并将它转换为JDOM Document对象。 org.jdom2.input.SAXBuilder:
使用SAX解析机制解析XML并转换为JDOM Document。 org.jdom2.input.StAXEventBuilder
和org.jdom2.input.StAXStreamBuilder
作用和前面两个类似,不再赘述。 org.jdom2.Document
JDOM Document对象提供有用的方法获取根元素,读取或修改元素内容等操作,我们将要使用它获取XML的根元素。 org.jdom2.Document
org.jdom2.input.SAXBuilder:
SAX 解析メカニズムを使用して XML を解析し、JDOM ドキュメントに変換します。 org.jdom2.input.StAXEventBuilder
と org.jdom2.input.StAXStreamBuilder
には、前の 2 つと同様の機能があるため、再度説明しません。 org.jdom2.Document
JDOM Document オブジェクトは、ルート要素の取得、要素コンテンツの読み取りまたは変更などに便利なメソッドを提供します。これを使用して、XML のルート要素を取得します。
org.jdom2.Document
は、子要素のコレクションの取得、子要素の値の取得、属性値の取得、およびその他の操作を行うための便利なメソッドを提供します。 次に、case プログラムを使用して XML ファイルを読み取り、Java オブジェクトを生成します。
employees.xml<?xml version="1.0" encoding="UTF-8"?><Employees> <Employee id="1"> <age>29</age> <name>Pankaj</name> <gender>Male</gender> <role>Java Developer</role> </Employee> <Employee id="2"> <age>35</age> <name>Lisa</name> <gender>Female</gender> <role>CEO</role> </Employee> <Employee id="3"> <age>40</age> <name>Tom</name> <gender>Male</gender> <role>Manager</role> </Employee></Employees>
この XML ファイルには、従業員情報を格納するために Employee クラスが使用されます。
package com.journaldev.xml; public class Employee { private int id; private String name; private String gender; private int age; private String role; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getRole() { return role; } public void setRole(String role) { this.role = role; } @Override public String toString() { return "Employee:: ID="+this.id+" Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender + " Role=" + this.role; } }
次に、テスト プログラムで DOMBuilder を使用して XML ファイルを読み取り、Employee オブジェクトのコレクションを生成します。
JDOMXMLReader.java
package com.journaldev.xml.jdom; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException;import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; import org.jdom2.Element;import org.jdom2.JDOMException; import org.jdom2.input.DOMBuilder; import org.jdom2.input.SAXBuilder; import org.jdom2.input.StAXEventBuilder; import org.jdom2.input.StAXStreamBuilder; import org.w3c.dom.Document; import org.xml.sax.SAXException; import com.journaldev.xml.Employee; public class JDOMXMLReader { public static void main(String[] args) { final String fileName = "/Users/pankaj/employees.xml"; org.jdom2.Document jdomDoc; try { //we can create JDOM Document from DOM, SAX and STAX Parser Builder classes jdomDoc = useDOMParser(fileName); Element root = jdomDoc.getRootElement(); List<Element> empListElements = root.getChildren("Employee"); List<Employee> empList = new ArrayList<>(); for (Element empElement : empListElements) { Employee emp = new Employee(); emp.setId(Integer.parseInt(empElement.getAttributeValue("id"))); emp.setAge(Integer.parseInt(empElement.getChildText("age"))); emp.setName(empElement.getChildText("name")); emp.setRole(empElement.getChildText("role")); emp.setGender(empElement.getChildText("gender")); empList.add(emp); } //lets print Employees list information for (Employee emp : empList) System.out.println(emp); } catch (Exception e) { e.printStackTrace(); } } //Get JDOM document from DOM Parser private static org.jdom2.Document useDOMParser(String fileName) throws ParserConfigurationException, SAXException, IOException { //creating DOM Document DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder; dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(new File(fileName)); DOMBuilder domBuilder = new DOMBuilder(); return domBuilder.build(doc); } }
ご覧のとおり、ここでは DOM 解析ラッパー クラスを使用して JDOM Document オブジェクトを取得します。
プログラム出力を実行します:Employee:: ID=1 Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: ID=2 Name=Lisa Age=35 Gender=Female Role=CEOEmployee:: ID=3 Name=Tom Age=40 Gender=Male Role=Manager
SAX および STAX 解析メカニズムを使用して完了することもできます。次のメソッドを使用して完了することもできます:
/Get JDOM document from SAX Parserprivate static org.jdom2.Document useSAXParser(String fileName) throws JDOMException, IOException { SAXBuilder saxBuilder = new SAXBuilder(); return saxBuilder.build(new File(fileName)); } //Get JDOM Document from STAX Stream Parser or STAX Event Parserprivate static org.jdom2.Document useSTAXParser(String fileName, String type) throws FileNotFoundException, XMLStreamException, JDOMException{ if(type.equalsIgnoreCase("stream")){ StAXStreamBuilder staxBuilder = new StAXStreamBuilder(); XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new FileInputStream(fileName)); return staxBuilder.build(xmlStreamReader); } StAXEventBuilder staxBuilder = new StAXEventBuilder(); XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(new FileInputStream(fileName)); return staxBuilder.build(xmlEventReader); }
異なるラッパー クラスを使用しているだけなので、プログラムを実行すると同じ出力が得られます。 、ただし、JDOM Document オブジェクトと同じものを取得します。
JDOM を使用する利点は、処理コードを変更せずに、基礎となる解析メカニズムを簡単に切り替えることができることです。
JDOM は、XML ドキュメントの読み取り、変更、生成をより便利に行うための非常に優れた Java XML API を提供します。 JDOM は、ユーザーが SAX、DOM、STAX イベント解析、STAX ストリーム解析から特定の実装を選択できるラッパー クラスも提供します。
org.jdom2.input.DOMBuilder:
DOM 解析メカニズムを使用して XML を解析し、JDOM Document オブジェクトに変換します。 🎜org.jdom2.input.SAXBuilder:
SAX 解析メカニズムを使用して XML を解析し、JDOM ドキュメントに変換します。 🎜org.jdom2.input.StAXEventBuilder
と org.jdom2.input.StAXStreamBuilder
には、前の 2 つと同様の機能があるため、再度説明しません。 🎜org.jdom2.Document
JDOM Document オブジェクトは、ルート要素の取得、要素コンテンツの読み取りまたは変更などに便利なメソッドを提供します。これを使用して、XML のルート要素を取得します。 🎜org.jdom2.Document
は、子要素のコレクションの取得、子要素の値の取得、属性値の取得、およびその他の操作を行うための便利なメソッドを提供します。 🎜次に、case プログラムを使用して XML ファイルを読み取り、Java オブジェクトを生成します。 🎜employees.xml🎜rrreee🎜この XML ファイルには、従業員情報を格納するために Employee クラスが使用されます。 🎜rrreee🎜次に、テスト プログラムで DOMBuilder を使用して XML ファイルを読み取り、Employee オブジェクトのコレクションを生成します。 🎜JDOMXMLReader.java🎜rrreee🎜 ご覧のとおり、ここでは DOM 解析ラッパー クラスを使用して JDOM Document オブジェクトを取得します。 🎜プログラム出力を実行します:🎜rrreee🎜 SAX および STAX 解析メカニズムを使用して完了することもできます。次のメソッドを使用して完了することもできます:🎜rrreee🎜 異なるラッパー クラスを使用しているだけなので、プログラムを実行すると同じ出力が得られます。 、ただし、JDOM Document オブジェクトと同じものを取得します。 🎜 JDOM を使用する利点は、処理コードを変更せずに、基礎となる解析メカニズムを簡単に切り替えることができることです。 🎜🎜上記は、Java&Xml チュートリアル (6) JDOM を使用して XML ファイルを解析する内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。 🎜🎜🎜🎜
RSSドキュメントは、XMLファイルを介してコンテンツの更新を公開するための簡単なサブスクリプションメカニズムです。 1. RSSドキュメント構造は、要素で構成され、複数の要素が含まれています。 2。RSSリーダーを使用して、XMLを解析することにより、チャネルをサブスクライブし、情報を抽出します。 3.高度な使用には、FeedParserライブラリを使用したフィルタリングとソートが含まれます。 4.一般的なエラーには、XMLの解析とエンコードの問題が含まれます。 XML形式とエンコードをデバッグ中に検証する必要があります。 5.パフォーマンス最適化の提案には、キャッシュRSSドキュメントと非同期解析が含まれます。

RSSとXMLは、最新のWebで依然として重要です。 1.RSSはコンテンツを公開および配布するために使用され、ユーザーはRSSリーダーを介して購読して更新を取得できます。 2。XMLはマークアップ言語であり、データストレージと交換をサポートし、RSSファイルはXMLに基づいています。

RSSにより、マルチメディアコンテンツの埋め込み、条件付きサブスクリプション、パフォーマンスとセキュリティの最適化が可能になります。 1)タグを介してオーディオやビデオなどのマルチメディアコンテンツを埋め込みました。 2)XMLネームスペースを使用して条件付きサブスクリプションを実装し、サブスクライバーが特定の条件に基づいてコンテンツをフィルタリングできるようにします。 3)CDATAセクションとXMLSchemaを介してRSSFeedのパフォーマンスとセキュリティを最適化して、標準の安定性とコンプライアンスを確保します。

RSSは、頻繁に更新されるデータを公開するために使用されるXMLベースの形式です。 Web開発者として、RSSを理解することで、コンテンツの集約と自動化の更新機能を改善できます。 RSS構造、解析、および生成方法を学習することにより、RSSFeedsを自信を持って処理し、Web開発スキルを最適化できるようになります。

RSSは、JSONの代わりにXMLを選択しました。1)XMLの構造と検証機能は、RSS複雑なデータ構造のニーズに適したJSONよりも優れています。 2)その時点でXMLは広くサポートされていました。 3)RSSの初期バージョンはXMLに基づいており、標準になっています。

RSSは、頻繁に更新されるコンテンツを購読および読み取りに使用するXMLベースの形式です。その実用的な原則には、生成と消費の2つの部分が含まれ、RSSリーダーを使用することで情報を効率的に取得できます。

RSSドキュメントのコア構造には、XMLタグと属性が含まれます。特定の解析と生成の手順は次のとおりです。1。XMLファイル、プロセス、タグを読み取ります。 2。抽出、、、、などのタグ情報。 3。バージョンの互換性を確保するために、カスタムタグと属性を処理します。 4.キャッシュと非同期処理を使用して、パフォーマンスを最適化してコードの読みやすさを確保します。

JSON、XML、およびRSSの主な違いは構造と使用です。1。JSONは、簡潔な構造と解析が簡単な単純なデータ交換に適しています。 2。XMLは、複雑なデータ構造に適しており、厳密な構造ですが複雑な解析があります。 3。RSSはXMLに基づいており、コンテンツのリリースに使用され、標準化されていますが使用が制限されています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

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

WebStorm Mac版
便利なJavaScript開発ツール

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