XML解析
- 博客分类:
- java
解析XML有两种方式
方式一:Dom解析器:
1,读取XML文件中的内容
//读取XML文件中的内容
//创建一个公司
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//创建队伍
DocumentBuilder bui=factory.newDocumentBuilder();
//获取资源(即你要去哪儿读取数据)
Class c=Class.forName("ReadXML");//forName(本类的名称)
InputStream in=c.getResourceAsStream("Stu.xml");
//创建树
Document doc= bui.parse(in);
in.close();
//取出<stu>节点
NodeList nodes=doc.getElementsByTagName("stu");
for(int i=0;i<nodes.getLength();i++){
//取出<stu>节点的id属性值
Element e=(Element)nodes.item(i);
String id=e.getAttribute("id");
//根据<stu>节点取到<stu>节点下的<name>节点
NodeList nodeList=e.getElementsByTagName("name");
//取出<name>节点下的值
Element el=(Element)nodeList.item(0);
String name=el.getTextContent();
2,往XMl中写入信息
//创建公司
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//创建队伍
DocumentBuilder bui=factory.newDocumentBuilder();
//创建文档对象
Document doc=bui.newDocument();
//设置版本
doc.setXmlVersion("1.0");
//写入根节点
Element root=doc.createElement("teacher");
doc.appendChild(root);
Scanner input=new Scanner(System.in);
for(int i=0;i<3;i++){
//创建<tea>节点
Element tea=doc.createElement("tea");
System.out.println("请输入老师的编号:");
String id=input.next();
tea.setAttribute("id", id);
//加入属性和<name>节点
Element name=doc.createElement("name");
System.out.println("请输入老师的姓名:");
String n=input.next();
name.setTextContent(n);
tea.appendChild(name);
root.appendChild(tea);
}
//保存XML文件也可调用SaveXML()方法
TransformerFactory fac=TransformerFactory.newInstance();
Transformer tf=fac.newTransformer();
DOMSource source=new DOMSource(doc);
StreamResult result=new StreamResult("f:/teas.xml");
tf.transform(source, result);
3,修改XMl中的信息
//调用得到DOC的方法
Document doc=getDoc();
NodeList nodeList=doc.getElementsByTagName("tea");
for(int i=0;i<nodeList.getLength();i++){
Element el=(Element)nodeList.item(i);
String id=el.getAttribute("id");
if(id.equals(tea.getId())){
NodeList nodes=el.getElementsByTagName("name");
Element name=(Element)nodes.item(0);
name.setTextContent(tea.getName());
break;
}
}
//调用保存的方法
SaveXML(doc);
private static final String FILE="f:/teas.xml";
//得到DOM的方法
public Document getDoc() throws ParserConfigurationException, SAXException,
IOException {
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder bui=factory.newDocumentBuilder();
Document doc=bui.parse(FILE);
return doc;
}
//保存XML文件的方法
private void SaveXML(Document doc)
throws TransformerFactoryConfigurationError,
TransformerConfigurationException, TransformerException {
TransformerFactory factory=TransformerFactory.newInstance();
Transformer tf=factory.newTransformer();
DOMSource source=new DOMSource(doc);
StreamResult result=new StreamResult(FILE);
tf.transform(source, result);
}
3,删除XMl中的信息
//删除方法
public void deleteInfo(String id)throws Exception{
Document doc=getDoc();
doc.getDocumentElement();
NodeList list=doc.getElementsByTagName("tea");
for(int i=0;i<list.getLength();i++){
Element el=(Element)list.item(i);
String ids=el.getAttribute("id");
if(ids.equals(id)){
Element root=doc.getDocumentElement();
root.removeChild(el);
break;
}
}
SaveXML(doc);
}
方式二:SAX解析器:
继承:DefaultHandler
实现其五个方法:
//文档开始了
public void startDocument() throws SAXException {
System.out.println("文档开始了");
}
//文档结束了
public void endDocument() throws SAXException {
System.out.println("文档结束了");
}
//元素开始了
public void startElement(String uri, String localName, String
name,Attributes attributes) throws SAXException {
if(name.equals("tea")){
System.out.println("id:" + attributes.getValue("id"));
}
}
//文本开始了
public void characters(char[] ch, int start, int length)
throws SAXException {
String str=new String(ch,start,length);
if(!str.trim().equals("")){
System.out.println("name:" + str);
}
}
//元素结束了
public void endElement(String uri, String localName, String name)
throws SAXException { }
然后在test方法中
public static void main(String[] args)throws Exception {
SAXParserFactory fac=SAXParserFactory.newInstance();
SAXParser par=fac.newSAXParser();
par.parse("f:/teas.xml", new SaxTest());
}
New SaxTest是一个new出一个类的实类
发表评论
-
Spring事务
2012-07-19 16:31 736Spring总结 一、事务管理 事务传播 1、requir ... -
JXL操作Excel
2012-07-16 18:46 764jxl是一个韩国人写的java操作excel的工具, 在 ... -
JAVA论坛
2012-06-24 08:32 816我推荐如下这些论坛,或许真能帮助您,做论坛,都是赔本的买卖,不 ... -
高并发处理方案
2012-06-06 14:03 4098时常看到高并发的问题,但高并发其实是最不需要考虑的东西。为何, ... -
七种排序
2012-05-31 01:45 992package com.xxa; public c ... -
线程
2012-05-23 18:41 926线程的生命周期 所谓的xx生命周期,其实就是某对象 ... -
Ajax基础
2012-05-21 17:28 651Ajax的概念是: 异步的JavaScript and ... -
ibator插件
2012-05-14 23:00 928现在我们着手来写一个ibatis的简单例子. 如果你是使 ... -
Java异常处理总结
2012-05-05 07:02 586Java异常处理总结 ... -
各种排序算法
2012-05-03 22:16 691... -
JVM详解
2012-05-02 18:04 670首先这里澄清两个概 ... -
tomcat中的context.xml元素详解
2012-04-21 20:40 909元素名 属性 解释 ... -
java性能优化:垃圾回收(gc)
2012-04-07 22:41 810内存释放(主要是gc) ★jvm的内存 ...
相关推荐
易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 易语言 xml解析 教程 带源码
解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml解析xml
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,...
C# XML解析方式
XML解析、XML生成工具,灵活好用的XML解析器、封装接口简单易用
XML解析技术研究XML解析技术研究XML解析技术研究XML解析技术研究XML解析技术研究
使用dom4j解析XML,用于解析复杂XML,多层镶嵌XML,多层循环xml解析,解析完保存到实体类
LabVIEW XML解析器示例, 包含xml加载,保存,解析等功能
minixml是适合嵌入式系统的xml解析器,支持dom
ios开发,简单的xml解析,亲测可用,自己认真研究研究,不要遇到点问题就放弃。
利用jdom解析复杂xml到bean中: 1.依赖的jar:jdom-1.1.jar,commons-beanutils.1.8.3.jar,commons-logging-1.1.1.jar ...用模板将xml解析 具体可以打断点运行主类:/xml_parse/src/com/vhl/main/StartMain.java,观察
Mini-XML 是一个小型 XML 解析库,您可以使用它来读取应用程序中的 XML 数据文件或字符串,而无需大型非标准库 读取 UTF-8 和 UTF-16 并写入 UTF-8 编码的 XML 文件和字符串。 数据存储在链表树结构中,保留 XML ...
java心电图xml解析源码。
XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析XML 解析
java实现xml解析word文档代码实现,通过解析word书签实现java动态写入word文档。方便使用。
XML解析 很全 一看就懂的东东。。。。。。。。。
rss阅读器与 XML解析 XML RSS 阅读器 Winfom ASP.NET rss阅读器与 XML解析 XML RSS 阅读器 Winfom ASP.NET rss阅读器与 XML解析 XML RSS 阅读器 Winfom ASP.NET rss阅读器与 XML解析 XML RSS 阅读器 Winfom ASP.NET ...
XML解析支持库
C++ XML解析之TinyXML篇
tinyxml解析XML文件