根据提供的文件信息,我们可以归纳出以下关于DOM解析的基本操作,包括删除、修改及将操作结果写入硬盘等关键知识点。 ### DOM解析基本操作——删除与修改XML文件 #### 一、DOM简介 DOM (Document Object Model) 是一种用于处理结构化文档的标准接口,它能够以树形结构表示文档,并提供了一套API来访问、修改和创建这些结构化的文档对象。在Java中,DOM是通过一系列的类库实现的,主要包含于`javax.xml.parsers`包和`org.w3c.dom`包中。 #### 二、DOM解析器创建 在Java中,要进行DOM解析,首先需要创建一个`DocumentBuilderFactory`对象,该对象用于设置解析器的相关属性。之后通过这个工厂对象可以创建一个`DocumentBuilder`对象,该对象负责读取XML文档并将其转换成DOM树。 ```java DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); ``` #### 三、解析XML文档 接下来,使用`DocumentBuilder`对象的`parse`方法来解析XML文件,该方法返回一个`Document`对象,该对象代表了整个XML文档的根节点。 ```java InputStream myfile = new FileInputStream(url); Document document = builder.parse(myfile); ``` #### 四、获取XML元素 在获取到了`Document`对象后,可以通过调用其`getDocumentElement`方法来获取XML文档的根节点,进而遍历文档中的所有元素。 ```java Element element = document.getDocumentElement(); NodeList nodeList = element.getChildNodes(); ``` #### 五、遍历并操作XML节点 遍历DOM树的过程中,可以通过检查每个节点的类型来确定是否为元素节点(`ELEMENT_NODE`),如果是,则可以根据节点名称来执行相应的操作。 ```java for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { if (node.getNodeName().equals("one")) { // 操作"one"节点 } else if (node.getNodeName().equals("two")) { // 操作"two"节点 } } } ``` #### 六、修改XML节点 修改XML节点时,可以通过获取指定节点,然后调用相关方法来改变节点的属性或值。例如,要修改名为"one"的元素的某个属性值: ```java if (node.getNodeName().equals("one")) { Node innerNode = node.getFirstChild().getNextSibling(); NamedNodeMap attributes = innerNode.getAttributes(); Node attribute = attributes.getNamedItem("name"); attribute.setNodeValue("new_value"); } ``` #### 七、删除XML节点 删除节点可以通过父节点的`removeChild`方法实现。例如,删除名为"two"的元素: ```java if (node.getNodeName().equals("two")) { Node parent = node.getParentNode(); parent.removeChild(node); } ``` #### 八、将操作结果写回硬盘 完成对DOM树的操作后,需要将修改后的DOM树写回到XML文件中。这一步通常涉及到使用第三方库如`TransformerFactory`和`Transformer`来实现。 ```java TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(document); StreamResult result = new StreamResult(new File(outputUrl)); transformer.transform(source, result); ``` 以上就是DOM解析的基本操作流程,包括删除、修改以及将操作结果写回硬盘等关键步骤。这些操作对于处理XML文件非常实用,尤其是在需要动态更新XML内容的场景下。
























2.untitled.xml文件
解析,修改,以及删除并写到硬盘上
public class Text {
String url = System.getProperty("user.dir") + "/untitled.xml";
// 解析untitled.xml文件
public void paserxml() {
DocumentBuilderFactory fa = DocumentBuilderFactory.newInstance();
try {
InputStream myfile = new FileInputStream(url);
DocumentBuilder buider = fa.newDocumentBuilder();
Document document = buider.parse(myfile);
//获取根接点,也就是main接点
Element e = document.getDocumentElement();
//获取根接点的所有子接点的集合
NodeList nodelist = e.getChildNodes();
for (int i = 0; i < nodelist.getLength(); i++) {
Node n = nodelist.item(i);
//判断是不是接点
if (n.getNodeType() == Node.ELEMENT_NODE) {
if (n.getNodeName().equals("one")) {
System.out.println(innernode.getNodeName());
System.out.println("获取inner的属性名字"
+ innernode.getAttributes()
.getNamedItem("name").getNodeName());
System.out.println("获取inner的属性值"
+ innernode.getAttributes()
.getNamedItem("name").getNodeValue());
System.out.println("获取该接点的文本内容"
+ innernode.getFirstChild().getNodeValue());
}
if (n.getNodeName().equals("two")) {
System.out.println("获取two的接点名称" + n.getNodeName());
System.out.println("获取two的属性值"
+ n.getAttributes().getNamedItem("你")
.getNodeValue());
}
}
}
} catch (FileNotFoundException e) {
欢迎光临学网,收藏本篇文章 [1] [2] [3]
$False$
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
剩余6页未读,继续阅读


- 粉丝: 60
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 税收征管信息化发展和应用.ppt
- 工程施工阶段的项目管理.docx
- 《d游戏设计》-计算机图形学基础.ppt
- 女性网络购物的消费心理及行为特征.doc
- 计算机网络安全技术与防范策略.docx
- 互联网监管与网络道德建设标准标准答案.doc
- 例解JavaWeb页面传参方法-参数传递.docx
- 电子信息工程自动化技术分析.docx
- 项目管理之怎样对研发人员形成有效的激励.docx
- 简析电气工程及其自动化的智能化技术应用.docx
- 如何确保人工智能安全可靠可控?.docx
- 单片机控制实时时钟X1226设计方案.doc
- 企业业务流程信息化及发展展望.docx
- 信息技术对大学生网络舆论引导的研究.docx
- 基于单片机的多功能数字钟的方案设计书08112.doc
- 毕业设计·电阻炉单片机检测控制系统[].doc


