首页 后端开发 XML/RSS教程 java对XML文件的解析、节点的增加、删除操作总结

java对XML文件的解析、节点的增加、删除操作总结

Jan 11, 2017 pm 02:52 PM

1、java代码: 
主要采用dom来进行操作 

package test; 
import java.io.IOException; 
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.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.NodeList; 
import org.w3c.dom.Text; 
import org.xml.sax.SAXException; 
public class XmlOprate { 
Document doc; 
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder; 
NodeList imags; 
String path; 
public NodeList getImags() { 
return imags; 
} 
public void setImags(NodeList imags) { 
this.imags = imags; 
} 
/** 
* 构造方法 
* @param path:xml文件的路径 
* @param nodes:要解析的xml节点名称 
*/ 
public XmlOprate(String path) { 
super(); 
this.path = path; 
System.out.println(System.getProperty("user.dir")); 
} 
/** 
* 解析XML 
* @param path 
*/ 
public void readXml(){ 
try { 
builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize(); 
NodeList imags =doc.getElementsByTagName("imags"); 
this.setImags(imags); 
for (int i=0;i<imags.getLength();i++){ 
Element link=(Element) imags.item(i); 
System.out.print("title: "); 
System.out.println(link.getElementsByTagName("title").item(0).getFirstChild().getNodeValue()); 
System.out.print("URL: "); 
System.out.println(link.getElementsByTagName("url").item(0).getFirstChild().getNodeValue()); 
System.out.print("imgsrc: "); 
System.out.println(link.getElementsByTagName("imgsrc").item(0).getFirstChild().getNodeValue()); 
System.out.println(); 
} 
}catch (ParserConfigurationException e) { 
e.printStackTrace(); 
} catch (SAXException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} 
} 
/** 
* addCode 
* @param path 
*/ 
public void addXmlCode(String imgsrc,String title,String url){ 
try { 
builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize(); 
Text textseg; 
Element imag=doc.createElement("imags"); 
Element linkimgsrc=doc.createElement("imgsrc"); 
textseg=doc.createTextNode(imgsrc); 
linkimgsrc.appendChild(textseg); 
imag.appendChild(linkimgsrc); 
Element linktitle=doc.createElement("title"); 
textseg=doc.createTextNode(title); 
linktitle.appendChild(textseg); 
imag.appendChild(linktitle); 
Element linkurl=doc.createElement("url"); 
textseg=doc.createTextNode(url); 
linkurl.appendChild(textseg); 
imag.appendChild(linkurl); 
doc.getDocumentElement().appendChild(imag); 
TransformerFactory tFactory =TransformerFactory.newInstance(); 
Transformer transformer; 
transformer = tFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new java.io.File(path)); 
transformer.transform(source, result); 
}catch(Exception e){ 
} 
} 
/** 
* delete xml code 
* @param path 
*/ 
public void delXmlCode(){ 
try { 
builder = factory.newDocumentBuilder(); 
doc=builder.parse(path); 
doc.normalize(); 
NodeList imags =doc.getElementsByTagName("imags"); 
Element elink=(Element) imags.item(0); 
elink.removeChild(elink.getElementsByTagName("imgsrc").item(0)); 
elink.removeChild(elink.getElementsByTagName("title").item(0)); 
elink.removeChild(elink.getElementsByTagName("url").item(0)); 
doc.getFirstChild().removeChild(elink); 
TransformerFactory tFactory =TransformerFactory.newInstance(); 
Transformer transformer = tFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new java.io.File(path)); 
transformer.transform(source, result); 
} catch (ParserConfigurationException e) { 
e.printStackTrace(); 
} catch (SAXException e) { 
e.printStackTrace(); 
} catch (IOException e) { 
e.printStackTrace(); 
} catch (TransformerConfigurationException e) { 
e.printStackTrace(); 
} catch (TransformerException e) { 
e.printStackTrace(); 
} 
} 
}
登录后复制

2、xml部分

<?xml version="1.0" encoding="UTF-8" ?> 
<root> 
<imags> 
<imgsrc>images/ad-01.jpg</imgsrc> 
<title>胡志明市</title> 
<url>http://torchrelay.beijing2008.cn/cn/journey/hochiminhcity/</url> 
</imags> 
<imags> 
<imgsrc>images/ad-02.jpg</imgsrc> 
<title>香港2</title> 
<url>http://torchrelay.beijing2008.cn/cn/journey/hongkong/</url> 
</imags> 
</root>
登录后复制

3、总结:
看对xml操作的三个方法(读、写、删),他们的初始化语句都相同:

builder = factory.newDocumentBuilder(); 
Document doc=builder.parse(path); 
doc.normalize();
登录后复制

开始我打算把这部分相同的部分拿出来写在构造方法中,但是在测试中发现,这样总是会报空指针的错误(搞了我好久);
而只是把

builder = factory.newDocumentBuilder();
登录后复制


放到builder的初始化语句中的时候,读没问题,但是当写或者删的时候也会报错; 
所以就写成现在这样了,感觉有点乱乱的,但也没想到什么好的方法,就先贴到这里了,以后可能会用得着

更多java对XML文件的解析、节点的增加、删除操作总结相关文章请关注PHP中文网!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
<🎜>掩盖:探险33-如何获得完美的色度催化剂
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1430
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
XML在RSS中的优势:技术深度潜水 XML在RSS中的优势:技术深度潜水 Apr 23, 2025 am 12:02 AM

XML在RSS中具有结构化数据、可扩展性、跨平台兼容性和解析验证的优势。1)结构化数据确保内容的一致性和可靠性;2)可扩展性允许添加自定义标签以适应内容需求;3)跨平台兼容性使其在不同设备上无缝工作;4)解析和验证工具确保Feed的质量和完整性。

解码RSS:内容提要的XML结构 解码RSS:内容提要的XML结构 Apr 17, 2025 am 12:09 AM

RSS的XML结构包括:1.XML声明和RSS版本,2.频道(Channel),3.条目(Item)。这些部分构成了RSS文件的基础,允许用户通过解析XML数据来获取和处理内容信息。

超越基础:高级RSS文档功能 超越基础:高级RSS文档功能 Apr 21, 2025 am 12:03 AM

RSS的高级功能包括内容命名空间、扩展模块和条件订阅。1)内容命名空间扩展RSS功能,2)扩展模块如DublinCore或iTunes添加元数据,3)条件订阅根据特定条件筛选条目。这些功能通过添加XML元素和属性实现,提升信息获取效率。

XML中的RSS:揭示内容联合的核心 XML中的RSS:揭示内容联合的核心 Apr 22, 2025 am 12:08 AM

RSS在XML中的实现方式是通过结构化的XML格式来组织内容。1)RSS使用XML作为数据交换格式,包含频道信息和项目列表等元素。2)生成RSS文件需按规范组织内容,发布到服务器供订阅。3)RSS文件可通过阅读器或插件订阅,实现内容自动更新。

RSS和XML:了解Web内容的动态二重奏 RSS和XML:了解Web内容的动态二重奏 Apr 19, 2025 am 12:03 AM

RSS和XML是用于网络内容管理的工具。RSS用于发布和订阅内容,XML用于存储和传输数据。它们的工作原理包括内容发布、订阅和更新推送。使用示例包括RSS发布博客文章和XML存储书籍信息。

XML中的RSS:解码标签,属性和结构 XML中的RSS:解码标签,属性和结构 Apr 24, 2025 am 12:09 AM

RSS是一种基于XML的格式,用于发布和订阅内容。RSS文件的XML结构包括根元素、元素和多个元素,每个代表一个内容条目。通过XML解析器读取和解析RSS文件,用户可以订阅并获取最新内容。

RSS文档格式:探索RSS 2.0及以后 RSS文档格式:探索RSS 2.0及以后 Apr 26, 2025 am 12:22 AM

RSS2.0是一种开放标准,允许内容发布者以结构化的方式分发内容。它包含了丰富的元数据,如标题、链接、描述、发布日期等,使得订阅者能够快速浏览和访问内容。RSS2.0的优势在于其简洁和扩展性。例如,它允许自定义元素,这意味着开发者可以根据需求添加额外的信息,如作者、分类等。

缩放XML/RSS处理:性能优化技术 缩放XML/RSS处理:性能优化技术 Apr 27, 2025 am 12:28 AM

处理XML和RSS数据时,可以通过以下步骤优化性能:1)使用高效的解析器如lxml提升解析速度;2)采用SAX解析器减少内存使用;3)利用XPath表达式提高数据提取效率;4)实施多进程并行处理提升处理速度。

See all articles