问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

dom解析xml文档的步骤

发布网友 发布时间:2022-04-22 23:58

我来回答

2个回答

热心网友 时间:2022-04-11 19:05

包括增加,删除,查询,主方法测式方法,下面有xml文档,记得导入jdom.jar
步骤是:
1、建立DocumentBuilderFactory
2、建立DocumentBuilder
3、解析xml文档
4、操作xml文档
5、建立TransformerFactory
6、建立Transformer
7、保存修改后的xml文档
下边是一个例子,希望可以帮到你
import java.io.File;
import java.io.IOException;
import java.util.HashMap;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Attr;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Company {

String fileXMLName;

public Company(String fileXMLName) {
super();
this.fileXMLName = fileXMLName;
}

public void showList(){
try {
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();

Document doc=db.parse(this.fileXMLName);
NodeList n1=doc.getElementsByTagName("雇员");
for(int i=0;i<n1.getLength();i++){
Element guyuan=(Element)n1.item(i);
Attr bumen=guyuan.getAttributeNode("部门");
Attr quan=guyuan.getAttributeNode("全职");
System.out.print("雇员"+(i+1));
if(bumen!=null){
System.out.println("部门:"+bumen.getValue());
}
if(quan!=null){
System.out.println("全职:"+quan.getValue());
}
NodeList xingming=guyuan.getElementsByTagName("姓名");
System.out.println("姓名:"+xingming.item(0).getFirstChild().getNodeValue());
NodeList gudate=guyuan.getElementsByTagName("雇佣日期");
System.out.println("雇佣日期:"+gudate.item(0).getFirstChild().getNodeValue());
NodeList qingdan=guyuan.getElementsByTagName("项目清单");
NodeList xiangmu=((Element)qingdan.item(0)).getElementsByTagName("项目");
for(int j=0;j<xiangmu.getLength();j++){
Element xiangmu2=(Element)xiangmu.item(j);
NodeList chanping=xiangmu2.getElementsByTagName("产品");
NodeList jiage=xiangmu2.getElementsByTagName("价格");
System.out.println("项目"+(j+1)+"产品:"+chanping.item(0).getFirstChild().getNodeValue());
System.out.println("项目"+(j+1)+"产品:"+jiage.item(0).getFirstChild().getNodeValue());
}
}
} catch (DOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void CreateOne(String chanping,String jiage){
try {
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(this.fileXMLName);
NodeList xingming=doc.getElementsByTagName("姓名");
Element xingming1=null;
for(int i=0;i<xingming.getLength();i++){
xingming1=(Element)xingming.item(i);
String name=xingming1.getFirstChild().getNodeValue();
if(name.equals("王权")){
Element guyuan=(Element)xingming1.getParentNode();
NodeList qingdan=guyuan.getElementsByTagName("项目清单");
Element qingdan1=(Element)qingdan.item(0);
Element xiangmu=doc.createElement("项目");
Element chan=doc.createElement("产品");
Element jia=doc.createElement("价格");
chan.appendChild(doc.createTextNode(chanping));
jia.appendChild(doc.createTextNode(jiage));
xiangmu.appendChild(chan);
xiangmu.appendChild(jia);
qingdan1.appendChild(xiangmu);
TransformerFactory tf=TransformerFactory.newInstance();
Transformer tr=tf.newTransformer();
tr.transform(new DOMSource(doc), new StreamResult(new File("newcompany.xml")));
break;
}
}

} catch (DOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void deleteone(String bumen){

try {
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(this.fileXMLName);
NodeList gongsis=doc.getElementsByTagName("公司");
Element gongsi=(Element)gongsis.item(0);
NodeList guyuans=doc.getElementsByTagName("雇员");
Element guyuan=null;
for(int i=0;i<guyuans.getLength();i++){
guyuan=(Element)guyuans.item(i);
Attr bumens=guyuan.getAttributeNode("部门");
if((bumens!=null)&&(bumens.getValue().equals(bumen))){
gongsi.removeChild(guyuan);
}
}
TransformerFactory tf=TransformerFactory.newInstance();
Transformer tr=tf.newTransformer();
tr.transform(new DOMSource(doc), new StreamResult(new File("newcompany.xml")));
} catch (DOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public static void main(String[] args) {
// TODO Auto-generated method stub

Company com=new Company("newcompany.xml");
com.showList();
//com.CreateOne("液晶显示器", "200");
//Company com1=new Company("newcompany.xml");
//com1.showList();
com.deleteone("客服部");
Company com2=new Company("newcompany.xml");
com2.showList();
}

}

xml文档格式
<?xml version="1.0" encoding="UTF-8"?><!--内部定义--><公司>
<雇员 全职="是" 部门="市场部">
<姓名>李东</姓名>
<雇佣日期>2005-01-15</雇佣日期>
<项目清单 数量="2">
<项目>
<产品>打印机</产品>
<价格>$111.00</价格>
</项目>
<项目>
<产品>笔记本</产品>
<价格>$9897.00</价格>
</项目>
</项目清单>
</雇员>
</公司>

热心网友 时间:2022-04-11 20:23

package com.mty95190.cn;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Dom4jWriter {

public void createXml(String fileName,String txtName){

Document document =DocumentHelper.createDocument();
Element root = document.addElement("root");
Element head = root.addElement("head");
Element type = head.addAttribute("type", "12");
Element code = head.addAttribute("code","cwb");
Element cwb = head.addElement("cwb");
cwb.setText("我是第一个");
Element zyw = head.addElement("zyw");
zyw.setText("你是第二个");
Element bb = cwb.addElement("bb");
bb.setText("我是你的gg");
Element mm = zyw.addElement("mm");
mm.setText("我是你的mm");

try {
Writer fileWriter = new FileWriter(fileName);
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(fileWriter,format);
xmlWriter.write(document);
xmlWriter.close();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String args[]){
Dom4jWriter aa = new Dom4jWriter();
aa.createXml("D://aa.xml", "aa.txt");
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小白开始做牛腩烧番茄前,应该做哪些准备? 普洱茶不管是纯料还是拼配它本身就很有意思 普洱茶的纯料VS拼配,谁更值得珍藏? 为什么我们听到熟悉的歌曲的音乐会感觉在唱歌词呢? abs制动防抱死系统什么时候用到 请问有谁知道离朝阳北路的煊特嘉园(炫特区)最近的浩沙健身俱乐部在哪 ... 朝阳北苑郊野公园有哪些 北苑哪些公园 北京北苑健身有哪些 王者荣耀黄忠开大怎么转圈 参加抖音中视频计划作品能不能dou加热? 如何加载 XMLDOM 组件 抖音发行人计划,收益更新时间,为什么我的收益一直没更新。 Python xml.dom.minidom保存时出错 发抖音中视频计划为什么抖音看不到自己的作品 你好,华为mate30pro打字声音怎么设置? 新手使用android的XML(DOM)解析问题,指定路径XML如何读取 抖音游戏发行人计划怎么挂链接 XML DOM 读取本地xml文件,在ie不能运行,在火狐可以运行,怎么回事?_百... 抖音定向计划可以设置开始时间吗 python xml.dom.minidom.parse 关于XML里DOM的问题 抖音短视频发布时候有什么小技巧? XML中DOM对象的作用是什么? python 解析xml需要什么模块 抖音扬帆计划内容是什么? XML中DOM有些什么用,它具体有很多的对象和方法,他们有什么用,具体举个... 2021抖音扶持计划 抖音短剧发布计划怎么填 工业烤箱温度为何升不上去 “抖音创作者成长计划”怎么帮助千万创作者实现内容变现? xmldom,xmlparser怎么安装 我快崩溃了,在抖音游戏推行人计划里发布了好多个作品,为什么一点播放量都没有? 关于XML接口DOM的描述,错误的是:() 请教这个xml文件的dom解析如何写 你知道抖音计划吗? import xml.dom.minidom dom = xml.dom.minidom.parse(&#39;abc.xml&#39;) 求问哪里错了呀,着急,谢谢!python3 如何通过DOM对象,来解析xml 抖音运营有什么技巧策略? 怎么利用一个dom对象生成一个xml文件 抖音游戏发行人计划,用苹果手机录好视频剪辑好发布后,不能直接看到挂的... oracle中xmldom.getelementsbytagname()使用问题 Server.CreateObject(&quot;Microsoft.XMLDOM&quot;)和new ActiveXObject(&quot;Microsoft.XMLDOM&quot;)创建对象的区别? 抖音新番计划怎么报名 请问缺少对象: &#39;xml_dom.getelementsbytagname(...).item(...)&#39; asp 这个是什么情况? asp中 xmlDom.getElementsByTagName(&quot;item&quot;)(0).childNodes(0).text 华为mate20到底是不是曲面屏?我怎么感觉它的屏幕看起来和OPPO Find X... 成都保单信用贷款的贷款额度一般是多少? mate20是直屏还是曲面屏 成都保单信用贷款一般可以贷多少款?