日常小结-xml编程(CRUD)
XML解析技术概述XML解析方式分为两种:dom和sax
XML解析开发包:Jaxp(sun)、Jdom,dom4j JAXP是J2SE的一部分,javax.xml org.w3c.dom org.xml.sax及其子包组成 javax.xml.parsers包中,定义了几个工厂类,调用工厂类可以得到dom或者sax解析器。从而实现xml文档的解析
//1.创建工厂
DocumentBuilderfactory factory = DocumentBuilderFactory.newInstance();
//2.得到dom解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//3.解析xml文档,得到代表文档的Document
Document document = builder.parse("src/book.xml");
public void read(){
DocumentBuilderfactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/book.xml");
NodeList book = document.getElementsByTagName("书名");//Node是ELement,attribute,text的超类
Node node = list.item(1);
String content = node.getTextContent();
System.out.println(content);
}
添加xml元素及更新XML文档javax.xml.transform包中的Transformer类用于把代表xml文件的Document对象转换为某种格式后进行输出,例如把xml文件应用样式表后转成一个html文档。利用这个对象,当然也可以把Document对象重新写入到一个xml文件中。 Transformer类通过transform方法完成转换操作,该方法接受一个源和一个目的地。我们可以通过:
Transform对象通过TransformFactory获得。 public void add() throws Exception{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Doument document = builder.parse("src/book.xml");
//创建节点
Element price = document.createElement("售价");
price.setTextContent(textContent)
//得到参考节点
Element refNode = (Element) document.getElementByTagName("售价").item(0);
//把得到插入的父节点
Element book = (Element) document.getElementByTagNAme(“书”).item(0);
//往book节点的指定位置插入子节点
book.insertBefore(price,refNode);
/* //创建的节点挂到第一本书上 Element book = (Element) document.getElementByTagName("书").item(0); book.appendChild(price); */
//把更新后的内存写回到xml文档
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMsource(document),new StreamRsult(new FileOutputStream("src/book.xml")))
}
添加属性public void addAttr() throws Exception{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/book.xml");
Element booknames = (Element) document.getElementSByTageName("书名").item(0);
bookname.setAttribute("name","XXXXX");
TransformerFactory tffactory = TransformerFactory.newInstance();
Transformer tf = tffactory.newTransformer();
tf.transform(new DOMsource(document),new StreamRsult(new FileOutputStream("src/book.xml")))
}
删除售价public void delete() throw Exception{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/book.xml");
//得到要删除的节点
Element e = (Element) document.getElementsByTagName("售价").item(0);
//得到要删除的节点的父节点
ELement book = (Element) document.getElementsByTagName("书").item(0);
book.removeChild(e);
}
public void delete() throw Exception{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/book.xml");
//得到要删除的节点
Element e = (Element) document.getElementsByTagName("售价").item(0);
e.getParentNode().remove(e);
}
更新节点public void update() throw Exception{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/book.xml");
//得到要删除的节点
Element e = (Element) document.getElementsByTagName("售价").item(0);
e.setTextContent("109元");
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 技术周刊 Vol.10 - React Native丨Learn Once, Write Anywh
- 使用最新版本Dojo1.7的dojox/mobile开发移动设备web应用
- 在c中读取磁盘中的数据
- Capture and Name Parts of the Match (抓取和命名匹配中的
- vb.net 分割byte数组的方法SplitBytes
- xml 文件序列化和解析
- Flex Ant脚本模板
- 我可以在Ruby on Rails 3中使用MAMP(MySQL)或XAMPP(MySQL)吗
- c – 从YYYYMMDDHHMMSS字符串获取time_t的最快方法
- C语言的isatty函数和ttyname函数以及sendmsg函数用法