Element root = document.getRootElement();
Element ageElm = newMemberElm.addElement("age");
element.setText("29");
XML プログラミング - DOM4J
XML API は、
jdomに似ており、 XML
ファイルの読み取りと書き込みに使用されます。 dom4j
は、優れたパフォーマンス、強力な機能、そして非常に使いやすいという特徴を備えた非常に優れた
JavaXML APIであり、オープンソースソフトウェアでもあり、SourceForgeで見つけることができます。また、主流のJava XML APIのパフォーマンス、機能性、使いやすさを評価するIBM developerWorksの記事もあり、dom4jがあらゆる面で優れていることがわかります。非常に優れています。最近では、Java ソフトウェアが XML の読み書きに dom4j を使用していることがわかります。特に、Sun の JAXM さえも使用していることは注目に値します。 dom4jも使用します。これはすでに必須の jar パッケージであり、Hibernate も設定ファイルの読み書きに使用します。 : DOM4J が非常に強力である理由の 1 つは、 XPath テクノロジーをサポートしていることです。必要に応じて、対応するリファレンス ドキュメントを検索できます。そして自分でダウンロードしてください。 なぜDOM4Jがあるのですか? 以前、ブログで説明した2つの技術、
DOMとSAX技術について、前者の欠点はメモリを消費すること、後者の欠点は読み取り操作しか実行できないことです。および DOM4J 効率を送信し、粗雑な操作を実行できます。
追記: DOM4Jを使用するには、対応する基本JAR
パッケージをインポートする必要があります。DOM4Jの拡張機能を使用する場合は、拡張機能もインポートする必要があります。 JAR パッケージ。
DOM4Jはじめに
DOM4Jドキュメントオブジェクト
を取得する3つの方法1.XMLファイルを読む、Get ドキュメントオブジェクト( よく使われます)
SAXReader reader = new SAXReader(); Document document = reader.read(new File(“src/input.xml"));
2.XMLフォームテキストを解析し、documentオブジェクト String text = "<members></members>";
Document document = DocumentHelper.parseText(text);
ログイン後にコピーを取得します3.アクティブに
String text = "<members></members>"; Document document = DocumentHelper.parseText(text);
documentを作成しますオブジェクト Document document = DocumentHelper.createDocument();
//创建根节点
Element root = document.addElement("members");
ログイン後にコピーPS
: Be対応する Document document = DocumentHelper.createDocument(); //创建根节点 Element root = document.addElement("members");
JAR パッケージをインポートするように注意してください。
Nodeオブジェクト
、ドキュメントのルートノードを取得します
Element root = document.getRootElement();
ログイン後にコピー
Element root = document.getRootElement();
2
、ノードの子ノードを取得します
Element element=node.element(“书名");
3
、ノードのコンテンツを取得します
String text1=node.getText();
String text2=node.getTextTrim(); // 去掉内容前面和后面的空格
ログイン後にコピー4、特定のノードの下にある「
String text1=node.getText(); String text2=node.getTextTrim(); // 去掉内容前面和后面的空格
member」という名前のすべての子ノードを取得し、 List nodes = rootElm.elements("member");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
// do something
}
ログイン後にコピー5を走査して、すべての子ノードを取得します特定のノードの下の子ノード 子ノードを走査
List nodes = rootElm.elements("member"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); // do something }
for(Iterator it=root.elementIterator();it.hasNext();){
Element element = (Element) it.next();
// do something
}
ログイン後にコピー6、特定のノードの下に子ノードを追加
for(Iterator it=root.elementIterator();it.hasNext();){ Element element = (Element) it.next(); // do something }
Element ageElm = newMemberElm.addElement("age");
ログイン後にコピー7、ノードテキストを設定
Element ageElm = newMemberElm.addElement("age");
element.setText("29");
ログイン後にコピー8、ノードを削除
element.setText("29");
//childElm是待删除的节点,parentElm是其父节点
parentElm.remove(childElm);
ログイン後にコピー9、
//childElm是待删除的节点,parentElm是其父节点 parentElm.remove(childElm);
CDATA Node を追加します Element contentElm = infoElm.addElement("content");
contentElm.addCDATA(diary.getContent());
ログイン後にコピー
Element contentElm = infoElm.addElement("content"); contentElm.addCDATA(diary.getContent());
PS
nodeオブジェクト属性
、特定のnode
Element root=document.getRootElement();
//属性名name
Attribute attribute=root.attribute("size");
ログイン後にコピー2の下で属性を取得し、属性のテキストを取得し、属性を削除します
Element root=document.getRootElement(); //属性名name Attribute attribute=root.attribute("size");
String text=attribute.getText();
、ノードのすべての属性をトラバースします Attribute attribute=root.attribute("size");
root.remove(attribute);
ログイン後にコピー
5Attribute attribute=root.attribute("size"); root.remove(attribute);
、ノードの属性とテキストを設定します Element root=document.getRootElement();
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}
ログイン後にコピー
6Element root=document.getRootElement(); for(Iterator it=root.attributeIterator();it.hasNext();){ Attribute attribute = (Attribute) it.next(); String text=attribute.getText(); System.out.println(text); }
、属性のテキストを設定します newMemberElm.addAttribute("name", "sitinspring");
ログイン後にコピー
newMemberElm.addAttribute("name", "sitinspring");
指定された位置にノードを挿入します
1.挿入位置ノードリスト(
list
)
list.add(index,elemnent)を呼び出し、element
の挿入位置を決定します。 インデックス。 Element 要素は、DocumentHelper オブジェクトを通じて取得できます。サンプルコード:
Attribute attribute=root.attribute("name"); attribute.setText("sitinspring");
ドキュメントをXMLファイルに書き込みます
1、ドキュメントが完全な英語の場合
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(document);
writer.close();
ログイン後にコピー2、如果文档含有中文
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding("utf-8");
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/com/pc/XML8.xml"), outputFormat);
xmlWriter.write(document);
xmlWriter.close();
ログイン後にコピーPS:出现乱码的原因是因为输出字符集不能识别中文,这样可以通过OutputFormat的setEncoding方法设置为”UTF-8”,然后再使用XMLWriter这种形参的(OutputStream out, OutputFormat format) 构造方构造方法,就能解决乱码问题了,至于为什么会用createPrettyPrint方法,是因为这样做输出的格式更符合人的阅读习惯。
综合案例
XML8.xml
<?xml version="1.0" encoding="utf-8"?>
<班级 班次="1班" 编号="C1">
<学生 学号="n1" 性别="男" 授课方式="面授" 朋友="n2" 班级编号="C1">
<名字>张三</名字>
<年龄>20</年龄>
<介绍>不错</介绍>
</学生>
<学生 学号="n2" 性别="女" 授课方式="面授" 朋友="n1 n3" 班级编号="C1">
<名字>李四</名字>
<年龄>18</年龄>
<介绍>很好</介绍>
</学生>
<学生 学号="n3" 性别="男" 授课方式="面授" 朋友="n2" 班级编号="C1">
<名字>王五</名字>
<年龄>22</年龄>
<介绍>非常好</介绍>
</学生>
<学生 性别="男" 班级编号="C1">
<名字>小明</名字>
<年龄>30</年龄>
<介绍>好</介绍>
</学生>
</班级>
ログイン後にコピー
package com.pc;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
*
* @author Switch
* @function 使用DOM4j解析XML文件
*
*/
public class XML8 {
// 使用DOM4j对XML进行CRUD操作
public static void main(String[] args) throws Exception {
// 1.得到解析器
SAXReader saxReader = new SAXReader();
// 2.指定解析哪个XML文件
Document document = saxReader.read(new File("src/com/pc/XML8.xml"));
// list(document.getRootElement());
// read(document);
// readByXPath(document);
// add(document);
// delete(document);
// updateElement(document);
// updateAttribute(document);
// addByIndex(document, 3);
}
// 更新属性(修改所有班级编号为C2)
public static void updateAttribute(Document document) throws Exception {
// 得到所有学生
List<Element> students = document.getRootElement().elements("学生");
for (Element e : students) {
// 修改班级编号
e.addAttribute("班级编号", "C2");
}
updateToXML(document);
}
// 更新元素(将所有学生的年龄+3)
public static void updateElement(Document document) throws Exception {
// 得到所有学生
List<Element> students = document.getRootElement().elements("学生");
for (Element e : students) {
// 取出年龄
Element age = e.element("年龄");
age.setText(Integer.parseInt(age.getTextTrim()) + 3 + "");
}
updateToXML(document);
}
// 删除元素(删除第一个学生)
public static void delete(Document document) throws Exception {
// 找到元素
Element stu = document.getRootElement().element("学生");
// 删除
stu.getParent().remove(stu);
// 更新
updateToXML(document);
}
// 添加元素到指定位置
public static void addByIndex(Document document, int index)
throws Exception {
// 创建一个元素
Element newStu = DocumentHelper.createElement("学生");
newStu.setText("小花");
// 得到所有学生的list
List<Element> students = document.getRootElement().elements("学生");
// 按索引添加
students.add(index, newStu);
// 更新
updateToXML(document);
}
// 添加元素(添加一个学生到xml中)
public static void add(Document document) throws Exception {
// 创建一个学生节点对象
Element newStu = DocumentHelper.createElement("学生");
// 给元素添加属性
newStu.addAttribute("学号", "n4");
Element newStuName = DocumentHelper.createElement("名字");
Element newStuAge = DocumentHelper.createElement("年龄");
Element newStuIntro = DocumentHelper.createElement("介绍");
// 把子元素挂载到学生节点下
newStu.add(newStuName);
newStu.add(newStuAge);
newStu.add(newStuIntro);
// 将学生挂载在根节点下
document.getRootElement().add(newStu);
// 更新
updateToXML(document);
}
private static void updateToXML(Document document)
throws UnsupportedEncodingException, FileNotFoundException,
IOException {
// 更新xml文件
// 直接输出会出现中文乱码
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
outputFormat.setEncoding("utf-8");
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(
"src/com/pc/XML8.xml"), outputFormat);
xmlWriter.write(document);
xmlWriter.close();
}
// xpath技术,跨层读取某个元素
public static void readByXPath(Document document) throws Exception {
// 取出第一个学生
Element student = (Element) document.selectSingleNode("/班级/学生[1]");
System.out.println("姓名:" + student.elementText("名字") + "\t年龄:"
+ student.elementText("年龄") + "\t介绍:"
+ student.elementText("介绍") + "\t性别:"
+ student.attributeValue("性别"));
}
// 读取指定的某个元素(读取第一个学生的信息)
public static void read(Document document) throws Exception {
// 得到根元素
Element root = document.getRootElement();
// root.elements("学生"); 取出root元素下的所有学生元素
// root.element("学生"); 取出root元素下的第一个学生元素
// 取出root元素下的第一个学生元素
Element student = (Element) root.elements("学生").get(0);
System.out.println("姓名:" + student.elementText("名字") + "\t年龄:"
+ student.elementText("年龄") + "\t介绍:"
+ student.elementText("介绍") + "\t性别:"
+ student.attributeValue("性别"));
}
// 遍历xml文件
public static void list(Element element) {
System.out.println("元素名称:" + element.getName() + "\t元素内容:"
+ element.getTextTrim());
Iterator<Element> iterator = element.elementIterator();
while (iterator.hasNext()) {
Element e = iterator.next();
// 递归
list(e);
}
}
}
ログイン後にコピー 以上就是XML编程-DOM4J的内容,更多相关内容请关注PHP中文网(www.php.cn)!
XMLWriter writer = new XMLWriter(new FileWriter("output.xml")); writer.write(document); writer.close();
OutputFormat outputFormat = OutputFormat.createPrettyPrint(); outputFormat.setEncoding("utf-8"); XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/com/pc/XML8.xml"), outputFormat); xmlWriter.write(document); xmlWriter.close();
<?xml version="1.0" encoding="utf-8"?> <班级 班次="1班" 编号="C1"> <学生 学号="n1" 性别="男" 授课方式="面授" 朋友="n2" 班级编号="C1"> <名字>张三</名字> <年龄>20</年龄> <介绍>不错</介绍> </学生> <学生 学号="n2" 性别="女" 授课方式="面授" 朋友="n1 n3" 班级编号="C1"> <名字>李四</名字> <年龄>18</年龄> <介绍>很好</介绍> </学生> <学生 学号="n3" 性别="男" 授课方式="面授" 朋友="n2" 班级编号="C1"> <名字>王五</名字> <年龄>22</年龄> <介绍>非常好</介绍> </学生> <学生 性别="男" 班级编号="C1"> <名字>小明</名字> <年龄>30</年龄> <介绍>好</介绍> </学生> </班级>
package com.pc; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * * @author Switch * @function 使用DOM4j解析XML文件 * */ public class XML8 { // 使用DOM4j对XML进行CRUD操作 public static void main(String[] args) throws Exception { // 1.得到解析器 SAXReader saxReader = new SAXReader(); // 2.指定解析哪个XML文件 Document document = saxReader.read(new File("src/com/pc/XML8.xml")); // list(document.getRootElement()); // read(document); // readByXPath(document); // add(document); // delete(document); // updateElement(document); // updateAttribute(document); // addByIndex(document, 3); } // 更新属性(修改所有班级编号为C2) public static void updateAttribute(Document document) throws Exception { // 得到所有学生 List<Element> students = document.getRootElement().elements("学生"); for (Element e : students) { // 修改班级编号 e.addAttribute("班级编号", "C2"); } updateToXML(document); } // 更新元素(将所有学生的年龄+3) public static void updateElement(Document document) throws Exception { // 得到所有学生 List<Element> students = document.getRootElement().elements("学生"); for (Element e : students) { // 取出年龄 Element age = e.element("年龄"); age.setText(Integer.parseInt(age.getTextTrim()) + 3 + ""); } updateToXML(document); } // 删除元素(删除第一个学生) public static void delete(Document document) throws Exception { // 找到元素 Element stu = document.getRootElement().element("学生"); // 删除 stu.getParent().remove(stu); // 更新 updateToXML(document); } // 添加元素到指定位置 public static void addByIndex(Document document, int index) throws Exception { // 创建一个元素 Element newStu = DocumentHelper.createElement("学生"); newStu.setText("小花"); // 得到所有学生的list List<Element> students = document.getRootElement().elements("学生"); // 按索引添加 students.add(index, newStu); // 更新 updateToXML(document); } // 添加元素(添加一个学生到xml中) public static void add(Document document) throws Exception { // 创建一个学生节点对象 Element newStu = DocumentHelper.createElement("学生"); // 给元素添加属性 newStu.addAttribute("学号", "n4"); Element newStuName = DocumentHelper.createElement("名字"); Element newStuAge = DocumentHelper.createElement("年龄"); Element newStuIntro = DocumentHelper.createElement("介绍"); // 把子元素挂载到学生节点下 newStu.add(newStuName); newStu.add(newStuAge); newStu.add(newStuIntro); // 将学生挂载在根节点下 document.getRootElement().add(newStu); // 更新 updateToXML(document); } private static void updateToXML(Document document) throws UnsupportedEncodingException, FileNotFoundException, IOException { // 更新xml文件 // 直接输出会出现中文乱码 OutputFormat outputFormat = OutputFormat.createPrettyPrint(); outputFormat.setEncoding("utf-8"); XMLWriter xmlWriter = new XMLWriter(new FileOutputStream( "src/com/pc/XML8.xml"), outputFormat); xmlWriter.write(document); xmlWriter.close(); } // xpath技术,跨层读取某个元素 public static void readByXPath(Document document) throws Exception { // 取出第一个学生 Element student = (Element) document.selectSingleNode("/班级/学生[1]"); System.out.println("姓名:" + student.elementText("名字") + "\t年龄:" + student.elementText("年龄") + "\t介绍:" + student.elementText("介绍") + "\t性别:" + student.attributeValue("性别")); } // 读取指定的某个元素(读取第一个学生的信息) public static void read(Document document) throws Exception { // 得到根元素 Element root = document.getRootElement(); // root.elements("学生"); 取出root元素下的所有学生元素 // root.element("学生"); 取出root元素下的第一个学生元素 // 取出root元素下的第一个学生元素 Element student = (Element) root.elements("学生").get(0); System.out.println("姓名:" + student.elementText("名字") + "\t年龄:" + student.elementText("年龄") + "\t介绍:" + student.elementText("介绍") + "\t性别:" + student.attributeValue("性别")); } // 遍历xml文件 public static void list(Element element) { System.out.println("元素名称:" + element.getName() + "\t元素内容:" + element.getTextTrim()); Iterator<Element> iterator = element.elementIterator(); while (iterator.hasNext()) { Element e = iterator.next(); // 递归 list(e); } } }

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











XML ファイルは PPT で開くことができますか? XML、Extensible Markup Language (Extensible Markup Language) は、データ交換とデータ ストレージで広く使用されている汎用マークアップ言語です。 HTML と比較して、XML はより柔軟であり、独自のタグとデータ構造を定義できるため、データの保存と交換がより便利で統一されます。 PPT (PowerPoint) は、プレゼンテーションを作成するために Microsoft によって開発されたソフトウェアです。包括的な方法を提供します。

Python を使用した XML データのマージと重複排除 XML (eXtensibleMarkupLanguage) は、データの保存と送信に使用されるマークアップ言語です。 XML データを処理するとき、複数の XML ファイルを 1 つにマージしたり、重複データを削除したりする必要がある場合があります。この記事では、Python を使用して XML データのマージと重複排除を実装する方法と、対応するコード例を紹介します。 1. XML データのマージ 複数の XML ファイルがある場合、それらをマージする必要があります。

Python の XML データを CSV 形式に変換する XML (ExtensibleMarkupLanguage) は、データの保存と送信に一般的に使用される拡張可能なマークアップ言語です。 CSV (CommaSeparatedValues) は、データのインポートとエクスポートに一般的に使用されるカンマ区切りのテキスト ファイル形式です。データを処理するとき、分析や処理を容易にするために、XML データを CSV 形式に変換する必要がある場合があります。 Pythonは強力です

Python を使用した XML データのフィルタリングと並べ替えの実装 はじめに: XML は、データをタグと属性の形式で保存する、一般的に使用されるデータ交換形式です。 XML データを処理するとき、多くの場合、データのフィルタリングと並べ替えが必要になります。 Python には、XML データを処理するための便利なツールとライブラリが多数用意されています。この記事では、Python を使用して XML データをフィルタリングおよび並べ替える方法を紹介します。 XML ファイルの読み取り 始める前に、XML ファイルを読み取る必要があります。 Python には XML 処理ライブラリが多数ありますが、

PHP を使用した XML データのデータベースへのインポート はじめに: 開発中、さらなる処理や分析のために外部データをデータベースにインポートする必要がよくあります。一般的に使用されるデータ交換形式として、XML は構造化データの保存と送信によく使用されます。この記事では、PHP を使用して XML データをデータベースにインポートする方法を紹介します。ステップ 1: XML ファイルを解析する まず、XML ファイルを解析し、必要なデータを抽出する必要があります。 PHP には XML を解析するためのいくつかの方法が用意されており、最も一般的に使用されるのは Simple を使用する方法です。

Python は XML と JSON 間の変換を実装します はじめに: 日常の開発プロセスでは、異なる形式間でデータを変換する必要があることがよくあります。 XML と JSON は一般的なデータ交換形式であり、Python ではさまざまなライブラリを使用して XML と JSON の間で変換できます。この記事では、一般的に使用されるいくつかの方法をコード例とともに紹介します。 1. Python で XML を JSON に変換するには、xml.etree.ElementTree モジュールを使用できます。

Python を使用した XML でのエラーと例外の処理 XML は、構造化データの保存と表現に使用される一般的に使用されるデータ形式です。 Python を使用して XML を処理すると、エラーや例外が発生することがあります。この記事では、Python を使用して XML のエラーと例外を処理する方法を紹介し、参考用のサンプル コードをいくつか示します。 Try-Except ステートメントを使用して XML 解析エラーを捕捉する Python を使用して XML を解析すると、時々、次のようなエラーが発生することがあります。

Python は XML 内の特殊文字とエスケープ シーケンスを解析します XML (eXtensibleMarkupLanguage) は、異なるシステム間でデータを転送および保存するために一般的に使用されるデータ交換形式です。 XML ファイルを処理する場合、特殊文字やエスケープ シーケンスが含まれる状況に遭遇することが多く、これにより解析エラーやデータの誤解が生じる可能性があります。したがって、Python を使用して XML ファイルを解析する場合は、これらの特殊文字とエスケープ シーケンスの処理方法を理解する必要があります。 1. 特殊文字と
