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 ...
随机推荐
- Android Studio导入第三方类库的方法
Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯定比E ...
- sublime text快捷键
Ctrl+Shift+V:粘贴并格式化Ctrl+D:选择单词,重复可增加选择下一个相同的单词Ctrl+L:选择行,重复可依次增加选择下一行Ctrl+M:跳转到对应括号Ctrl+K+B:开关侧栏Ctrl ...
- java常用工具
/** * 将字节数组转换成字符串 * @param array 字节数组 * @return String */ public static String byte2str(byte[] array ...
- react+redux官方实例TODO从最简单的入门(2)-- 增
虽然官网的TodoList的例子写的很详细,但是都是一步到位,就是给你一个action,好家伙,全部都写好了,给你一个reducer,所有功能也是都写好了,但是我们这些小白怎么可能一下就消化那么多,那 ...
- SQL分组多列统计(GROUP BY后按条件分列统计)
as tjsl from fyxx group by zt,whbmbh end) as ybhsl from fyxx group by whbmbh 下面是摘自别人的博客 最近遇到一个问题,需要对 ...
- Windows 10(64位)配置Caffe运行环境的基本流程
最新博客地址已搬家到: http://blog.csdn.net/zzlyw/article/details/53215148
- Libvlc API 简单说明 [转]
Libvlc API 简单说明 原文来自http://www.xuebuyuan.com/1519616.html libvlc_instance_t* libvlc_new(int argc, co ...
- 设置redis主从出现的问题
314:S 05 Jan 15:12:17.433 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc ...
- 【JavaScript】JS 中 原始字符串 和 HTML 字符转换
参考资料:http://www.sjyhome.com/javascript/js-html-escape.html JS转换HTML转义符 SJY • 发表于:2013年10月05日 17:04 • ...
- css-关于文本
1. 使用 text-overflow:ellipsis; 超出部分会变成省略号 http://www.w3school.com.cn/tiy/t.asp?f=css3_text-overflow 1 ...