/**
* 读取(解析)xml文件
* @author Administrator
*
*/
public class DOMRead {
public static void main(String[] args) throws Exception{
File file=new File("e:\\contact.xml");
InputStream in=new FileInputStream(file);
//创建DocuemntBuilderFactory实例化对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//通过DocumentBuilderFactory实例化对象来创建DocumentBuilder对象
DocumentBuilder db=dbf.newDocumentBuilder();
//通过DocumentBuilder实例化对象 解析方法 来获取Document对象
Document document=db.parse(in); //通过document对象来获取指定tagName的所有标签元素
NodeList memberList = document.getElementsByTagName("member");
for(int i=0;i<memberList.getLength();i++){
//获取指定索引的标签元素
Element ele =(Element) memberList.item(i);
//获取标签元素的属性
String id = ele.getAttribute("id");
String name = ele.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
String phone = ele.getElementsByTagName("phone").item(0).getFirstChild().getNodeValue();
System.out.println("id="+id+",name="+name+",phone="+phone);
}
}
} /**
* 输出(创建)xml文件
* @author Administrator
*
*/
public class DOMWrit {
public static void main(String[] args) throws Exception {
File outFile=new File("e:"+File.separator+"book.xml"); DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
//通过DocumentBuilder实例化对象 创建方式 来获取Document对象
Document document=db.newDocument(); //创建根节点books
Element booksElement=document.createElement("books");
String[] title=new String[]{"三国演义","红楼梦","水浒传"};
Double[] price=new Double[]{99.9,88.8,77.7}; for(int i=0;i<title.length;i++){
//创建book节点
Element bookElt=document.createElement("book");
//创建title、price节点
Element titleElt=document.createElement("title");
Element priceElt=document.createElement("price");
//设置title节点的内容,需要创建文本节点
titleElt.appendChild(document.createTextNode(title[i]));
//设置price节点的内容,需要创建文本节点
priceElt.appendChild(document.createTextNode(String.valueOf(price[i]))); //将title、price节点添加到book节点中
bookElt.appendChild(titleElt);
bookElt.appendChild(priceElt); //将book节点添加到books根节点中
booksElement.appendChild(bookElt);
}
//遗忘的步骤
//将根节点设置到Document之中
document.appendChild(booksElement); //将DOM树转换为xml进行输出
TransformerFactory transformerfactory=TransformerFactory.newInstance();
Transformer transformer=transformerfactory.newTransformer(); //设置输出的元素
Source xmlSource=new DOMSource(document); Result outputTarget=new StreamResult(outFile); transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
//输出
transformer.transform(xmlSource, outputTarget); }
}

DOM-XML(解析与创建)的更多相关文章

  1. XML解析和创建的JAXB方式

    1.说明 JAXB是Java Architecture for XML Binding, 即用于XML绑定的Java体系结构, JAXB作为JDK的一部分, 能便捷地将Java对象与XML进行相互转换 ...

  2. java dom xml解析和windows dom解析的差别

    1.java dom 子节点包括空节点. 2.java dom 文档节点值也是其的子节点. 而windows dom(mshtml.dll)子节点不包括空节点,而节点值也不是以子节点的方式来对待的.

  3. Java&Xml教程(二)使用DOM方式解析XML文件

    DOM XML 解析方式是最容易理解的,它將XML文件作为Document对象读取到内存中,然后你可以轻松地遍历不同的元素和节点对象.遍历元素和节点不需要按照顺序进行. DOM解析方式适合尺寸较小的X ...

  4. 复习知识点:XML解析数据,JOSN解析数据,GET请求数据,POST请求数据

    GDataXMLDocument-XML解析 #pragma mark - ======== Dom XML解析 - (IBAction)domParserActionXML_Document:(id ...

  5. XML:使用DOM技术解析xML文件中的城市,实现select级联选择

    中国的城市xml格式:cities.xml <?xml version="1.0" encoding="utf-8"?> <china> ...

  6. xml的解析与创建——bing到youdao导入文件的转换

    首先是为了解决一个问题:如何将必应单词本中记录的单词转入到有道词典中去.实际上,必应词典可以导出xml文件,但是该文件有道词典无法解析.这里涉及到xml的解析和创建了. 代码如下: import ja ...

  7. XML解析之DOM详解及与SAX解析方法的比较

    XML解析(DOM) XML文件解析方法介绍 我们所用到的NSXMLParser是采用SAX方法解析 SAX(Simple API for XML) 只能读,不能修改,只能顺序访问,适合解析大型XML ...

  8. 初学DOM树解析xml文件

    做了一次设计模式实验的题目: 某软件公司为新开发的智能手机控制与管理软件提供了一键备份功能,通过该功能可以将原本存储在手机中的通信录.短信.照片.歌曲等资料一次性全部拷贝到移动存储介质(例如MMC卡或 ...

  9. 【Java】XML解析之DOM

    DOM介绍 DOM(Document Object Model)解析是官方提供的XML解析方式之一,使用时无需引入第三方包,代码编写简单,方便修改树结构,但是由于DOM解析时是将整个XML文件加载到内 ...

  10. DOM方式解析XML文件实例

    books.XML文件: <?xml version="1.0" encoding="utf-8"?><bookstore>    &l ...

随机推荐

  1. 第一个Django项目:HelloWorld

    OS:Windows家庭中文版, Python:3.6.3,Django:2.0.3 在前一篇文章中,Django已经顺利安装到了Python中,下面,开发第一个Python项目吧! 1.django ...

  2. python网络编程-进程间数据通信(Queue,Pipe ,managers)

    一:进程间数据交换方法 不同进程间内存是不共享的,要想实现两个进程间的数据交换,可以用以下方法: Queue,Pipe ,managers 1)Queue,使用方法跟threading里的queue差 ...

  3. rsync + inotify 实时同步

    1. 前言 2 台 nginx 需要做集群, 静态文件和php文件都在nginx服务器本地. 有三种方案: (1)NFS (2)Rsync + inotify (3)共享存储服务器 第一种:当 nfs ...

  4. liblinear和libsvm区别

    来源于知乎: 1. LibLinear是线性核,LibSVM可以扩展到非线性核(当也能用线性核,但同样在线性核条件下会比LibLinear慢很多).2. 多分类:LibLinear是one vs al ...

  5. Java线程:新特征-有返回值的线程《转》

      原始文章   在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写.或者干脆绕过这道坎,走别的路了.   现在Java终于有可返回值的任务(也可以叫做线程)了. ...

  6. PlantUML——4.实例演示1

    给自己发消息 @startuml Alice -> Alice : This is a signal to self.\nIt also demonstrates \nmultiline tex ...

  7. php-fpm和cgi,并发响应的理解以及高并发和多线程的关系

    首先搞清楚php-fpm与cgi的关系 cgi cgi是一个web server与cgi程序(这里可以理解为是php解释器)之间进行数据传输的协议,保证了传递的是标准数据. php-cgi php-c ...

  8. Oracle学习笔记:11g服务介绍及哪些服务必须开启?

    由于工作环境中oracle版本为10g,不支持行转列函数pivot,特在自己电脑上安装了oracle 11g,但因为不经常使用,便把服务自动启动给关闭了,只在需要使用时手动启动,因此记录一下需要启动的 ...

  9. 【笔记】Python简明教程

    Python简明教程,此资源位于http://woodpecker.org.cn/abyteofpython_cn/chinese/ s=u'中文字符' #u表示unicode,使用u之后能正常显示中 ...

  10. Apache Kylin安装部署

    0x01 Kylin安装环境 Kylin依赖于hadoop大数据平台,安装部署之前确认,大数据平台已经安装Hadoop, HBase, Hive. 1.1 了解kylin的两种二进制包 预打包的二进制 ...