DOM解析示例
收藏信息.xml
<?xml version="1.0" encoding="GB2312" standalone="no"?><PhoneInfo>
<Brand id="0" name="华为">
<Type name="U8650"/>
<Type name="HW123"/>
<Type name="HW321"/>
</Brand>
<Brand id="1" name="苹果">
<Type name="iPhone4"/>
</Brand>
<Brand id="2" name="三星"><type name="s120"/></Brand></PhoneInfo>
解析示例:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
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.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException; public class ParseXml {
private Document document;
//获取DOM树
public void getDom(){
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
document = builder.parse("收藏信息.xml");
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} //遍历XML信息
public void showInfo(){
NodeList nodes = document.getElementsByTagName("Brand");
for(int i=0;i<nodes.getLength();i++){
Node node = nodes.item(i);
Element ele = (Element)node;
String brandName = ele.getAttribute("name");
System.out.println(brandName); NodeList types = ele.getChildNodes();
for(int j=0;j<types.getLength();j++){
Node typeNode = types.item(j);
//如果节点是元素节点时再类型转换
if(typeNode.getNodeType() == Node.ELEMENT_NODE){
Element typeEle = (Element)typeNode;
String typeName = typeEle.getAttribute("name");
System.out.println(typeName);
}
} } } //保存XML
public void saveXml(String path){
TransformerFactory factory = TransformerFactory.newInstance();
try {
//获取解析器
Transformer transformer = factory.newTransformer();
//指定特定的输出格式
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
//源
DOMSource source = new DOMSource(document);
//目标
StreamResult result = new StreamResult(new FileOutputStream(path));
//解析
transformer.transform(source, result); } catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} } //向XML添加节点
public void addEle(){
Element Brand = document.createElement("Brand");
Brand.setAttribute("name", "三星");
Element type = document.createElement("type");
type.setAttribute("name", "s120");
Brand.appendChild(type);
document.getElementsByTagName("PhoneInfo").item(0).appendChild(Brand);
saveXml("收藏信息.xml");
} //修改XML元素,为每个Brand节点添加一个ID属性,分别为0,1,2
public void updateEle(){
NodeList brand = document.getElementsByTagName("Brand");
for(int i=0;i<brand.getLength();i++){
Node node = brand.item(i);
Element ele = (Element)node;
ele.setAttribute("id", i+"");
}
saveXml("收藏信息.xml");
} //删除手机品牌为华为的相关元素
public void deleteEle(){
NodeList brand = document.getElementsByTagName("Brand");
for(int i=0;i<brand.getLength();i++){
Node node = brand.item(i);
Element brandEle = (Element)node;
if(brandEle.getAttribute("name").equals("华为")){
brandEle.getParentNode().removeChild(brandEle);
}
}
saveXml("收藏信息.xml");
} public static void main(String[] args) {
ParseXml px = new ParseXml();
px.getDom();
px.showInfo();
// px.saveXml("wjb.xml");
// px.addEle();
px.updateEle();
px.deleteEle();
} }
DOM解析示例的更多相关文章
- dom4j解析示例
收藏信息.xml <?xml version="1.0" encoding="GB2312" standalone="no"?> ...
- PHP Simple HTML DOM解析器
一直以来使用php解析html文档树都是一个难题.Simple HTML DOM parser 帮我们很好地解决了使用 php html 解析 问题.可以通过这个php类来解析html文档,对其中的h ...
- JavaEE XML DOM解析之DOM4J
DOM解析之DOM4J @author ixenos DOM4J常用API 读取xml文档: Document doc = new SAXReader().read("xml文件" ...
- JavaEE XML DOM解析
DOM解析XML @author ixenos XML解析方式(原理) a) DOM 解析树 b) SAX 流事件 DOM解析对应主流工具 i. DOM(官方) i ...
- Java XML DOM解析(xPath)
(一) XML概念 在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等.它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的 ...
- PHP Simple HTML DOM解析器使用入门
http://www.cnphp.info/php-simple-html-dom-parser-intro.html 一直以来使用php解析html文档树都是一个难题.Simple HTML DOM ...
- 用DOM解析XML ,用xpath快速查询XML节点
XPath是一种快速查询xml节点和属性的一种语言,Xpath和xml的关系就像是sql语句和数据库的关系.用sql语句可以从数据库中快速查询出东西同样的用xPath也可以快速的从xml中查询出东西. ...
- java拾遗1----XML解析(一) DOM解析
XML解析技术主要有三种: (1)DOM(Document Object Model)文档对象模型:是 W3C 组织推荐的解析XML 的一种方式,即官方的XML解析技术. (2)SAX(Simple ...
- XML解析(一) DOM解析
XML解析技术主要有三种: (1)DOM(Document Object Model)文档对象模型:是 W3C 组织推荐的解析XML 的一种方式,即官方的XML解析技术. (2)SAX(Simple ...
随机推荐
- Apache commons-configuration setDelimiterParsingDisable不生效的处理
Apache commons-configuration setDelimiterParsingDisable不生效的处理 项目中有用到commons-configuration,版本1.9. 配置初 ...
- Virus.Win32.Virlock.b分析
0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件 ...
- mac 下设置jdk 路径,设置hadoop 路径
1. touch ~/.bash_profile 创建一个文件 2.vim ~/.bash_profile JAVA_HOME=/Library/Java/JavaVirtualMachines/j ...
- PHP 图片上传工具类(支持多文件上传)
====================ImageUploadTool======================== <?php class ImageUploadTool { private ...
- Linux下安装jetty服务器
jetty和我们通常使用的tomcat一样,是一个开源的servlet容器,特点是轻量易部署,一方面jetty可以作为web容器使用,另一方面也是最一般的方式是jetty以一组jar包的形式发布,所以 ...
- 使用httpclient 调用selenium webdriver
结合上次研究的selenium webdriver potocol ,自己写http request调用remote driver代替selenium API selenium web driver ...
- swift 3.0 协议笔记
协议能够要求遵循者必须含有一些特定名称和类型的实例属性(instance property)或类属性(type property),也能够要求属性的(设置权限)settable 和(访问权限)gett ...
- 机器学习caffe环境搭建——redhat7.1和caffe的python接口编译
相信看这篇文章的都知道caffe是干嘛的了,无非就是深度学习.神经网络.计算机视觉.人工智能这些,这个我就不多介绍了,下面说说我的安装过程即遇到的问题,当然还有解决方法. 说下我的环境:1>虚拟 ...
- OpenGL实现3D漫游的理解
这篇文章主要参考以下两篇博客: 推导相机变换矩阵 OpenGL系列教程之五:OpenGL矩阵类 上面的第一篇是理论的讲解,第二篇有实例代码,我在后面会给出自己写的主函数,依赖的类可以从第二篇参考中下载 ...
- java 代码解压7z(带密码)转载请注明出处,谢谢
<sevenzipjbinding.version>9.20-2.00beta</sevenzipjbinding.version> <dependency> &l ...