<?xmlversion="1.0"encoding="UTF-8"standalone="no"?>
<note>
<store>和阮超市</store>
<saddress>河北软件学院</saddress>
<storeType>吃穿住行</storeType>
<things><!--商品-->
<basic><!--基本信息-->
<name>红烧牛肉面</name>
<price>3.5</price>
<id>1011202</id>
<type>食品</type>
</basic>
<putin><!--入库信息-->
<putInTime>入库时间:2011-9-26</putInTime>
<number>4000</number>
<outDate>有效日期:2012-9-26</outDate>
<operator>操作员:张三</operator>
</putin>
<source><!--商品货源-->
<workPeople>商人:李四</workPeople>
<工作时间>4年</工作时间><address>地址:北京</address>
<phone>电话:110</phone>
</source>
<out><!--出库信息-->
<putOutTime>出库日期:2011-9-27</putOutTime>
<putOutNo>出库数量:20箱</putOutNo>
<putOutPerson>操作员:王五</putOutPerson>
</out>
<工作时间>3年</工作时间></things>
<things>
<basic><!--基本信息-->
<name>麻辣牛肉面</name>
<price>3</price>
<id>1011203</id>
<type>食品</type>
</basic>
<putin><!--入库信息-->
<putInTime>2011-9-26</putInTime>
<number>30箱</number>
<outDate>2012-9-26</outDate>
<operator>张三</operator>
</putin>
<source><!--商品货源-->
<workPeople>李六</workPeople>
<address>北京</address>
<phone>110</phone>
</source>
<out><!--出库信息-->
<putOutTime>2011-9-27</putOutTime>
<putOutNo>20箱</putOutNo>
<putOutPerson>王五</putOutPerson>
</out>
<工作时间>4年</工作时间></things>
<things>
<basic><!--基本信息-->
<name>洗衣粉</name>
<price>2</price>
<id>2011201</id>
<type>生活用品</type>
</basic>
<putin><!--入库信息-->
<putInTime>2011-9-26</putInTime>
<number>300袋</number>
<outDate>2012-9-26</outDate>
<operator>张三</operator>
</putin>
<source><!--商品货源-->
<workPeople>邹胜</workPeople>
<address>天津</address>
<phone>119</phone>
</source>
<out><!--出库信息-->
<putOutTime>2011-9-27</putOutTime>
<putOutNo>20袋</putOutNo>
<putOutPerson>王五</putOutPerson>
</out>
</things>
<things>
<basic><!--基本信息-->
<name>香皂</name>
<price>200箱</price>
<id>2011203</id>
<type>生活用品</type>
</basic>
<putin><!--入库信息-->
<putInTime>2011-9-26</putInTime>
<number>30箱</number>
<outDate>2012-9-26</outDate>
<operator>张三</operator>
</putin>
<source><!--商品货源-->
<workPeople>吴玲</workPeople>
<address>上海</address>
<phone>114</phone>
</source>
<out><!--出库信息-->
<putOutTime>2011-9-27</putOutTime>
<putOutNo>20箱</putOutNo>
<putOutPerson>王五</putOutPerson>
</out>
</things>
<people><!--管理员-->
<peopleId>1</peopleId>
<peopleName>马武</peopleName>
<peoplePhone>120</peoplePhone>
<peopleWork>经理</peopleWork>
<peopleType>食品</peopleType>
</people>
<people><!--管理员-->
<peopleId>2</peopleId>
<peopleName>马生</peopleName>
<peoplePhone>150</peoplePhone>
<peopleWork>经理</peopleWork>
<peopleType>生活用品</peopleType>
</people>
</note>
实现SAX对store解析:
package超市;
importjava.io.File;
importjava.io.IOException;
importorg.xml.sax.Attributes;
importorg.xml.sax.SAXException;
importjavax.xml.parsers.SAXParser;
importorg.xml.sax.helpers.DefaultHandler;
importjavax.xml.parsers.SAXParserFactory;
importjavax.xml.parsers.ParserConfigurationException;
publicclassStoreSaxTest{
publicstaticvoidmain(String[]args){
try{
SAXParserFactoryfactory=SAXParserFactory.newInstance();
SAXParserparser=factory.newSAXParser();
parser.parse(newFile("src/store.xml"),newStoreHander());
}catch(ParserConfigurationExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(SAXExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
classStoreHanderextendsDefaultHandler{
inti=1;
Booleanflag=false;
//characters接收元素中字符数据的通知
publicvoidcharacters(char[]ch,intstart,intlength)throwsSAXException{
if(flag)
System.out.println(newString(ch,start,length));
}
//startDocument接收文档开始的通知
publicvoidstartDocument()throwsSAXException{
System.out.println("开始");
}
//endDocument接收文档结束的通知
publicvoidendDocument()throwsSAXException{
System.out.println("结束");
}
//startElement接收元素开始的通知
publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesattributes)throwsSAXException{
if(qName.equals("name")){
if(i==2){//改变i的值,来实现输出第几个
flag=true;}
i++;
}else
flag=false;
}
//startElement接收元素结束的通知
publicvoidendElement(Stringuri,StringlocalName,StringqName)throwsSAXException{
flag=false;
}
}
实现DOM对store的增加和修改:
package超市;
importjava.io.File;
importjava.io.IOException;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerConfigurationException;
importjavax.xml.transform.TransformerException;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.Text;
importorg.xml.sax.SAXException;
publicclassStoreDomTest1{
publicstaticvoidmain(String[]args){
try{
DocumentBuilderFactoryfactory=DocumentBuilderFactory
.newInstance();
DocumentBuilderbuilder=factory.newDocumentBuilder();
Documentdoc=builder.parse(newFile("src/store.xml"));
//执行插入(不指定位置)
createNode(doc);
//执行插入(指定明确位置)
insertFixeNode(doc);
//执行更新
updateNote(doc);
}catch(SAXExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ParserConfigurationExceptione1){
//TODOAuto-generatedcatchblock
e1.printStackTrace();
}
}
//插入
publicstaticvoidcreateNode(Documentdoc){
//得到一个名称叫做是things的一个节点
Nodenode=doc.getElementsByTagName("things").item(0);
//创建一个叫做“工作时间”的元素节点
Elementelement=doc.createElement("工作时间");
//为工作时间这个元素节点添加值
element.setTextContent("3年");
//添加到内存中(系统自动添加为最后一个元素节点)
node.appendChild(element);
//把内存中的更新的数据添加到文本中(所有的数据都要覆盖一次)
try{
TransformerFactoryfactory=TransformerFactory.newInstance();
Transformerformer=factory.newTransformer();
former.transform(newDOMSource(doc),newStreamResult(newFile(
"src/store.xml")));
}catch(TransformerConfigurationExceptione){
e.printStackTrace();
}catch(TransformerExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
//指定位置的插入
publicstaticvoidinsertFixeNode(Documentdoc){
//得到一个名称叫做是things的一个节点
Nodenode=doc.getElementsByTagName("address").item(0);
//创建一个元素节点
Elementelement=doc.createElement("工作时间");
//创建一个文本节点
Texttext=doc.createTextNode("4年");
//把text添加到element中
element.appendChild(text);
//指定确切位置
node.getParentNode().insertBefore(element,node);
try{
TransformerFactoryfactory=TransformerFactory.newInstance();
Transformerformer=factory.newTransformer();
former.transform(newDOMSource(doc),newStreamResult(newFile(
"src/store.xml")));
}catch(TransformerConfigurationExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(TransformerExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
//更新
publicstaticvoidupdateNote(Documentdoc){
Nodenode=doc.getElementsByTagName("number").item(0);
//更新
node.setTextContent("4000");
//更新到文本文件中
try{
TransformerFactoryfactory=TransformerFactory.newInstance();
Transformerformer=factory.newTransformer();
former.transform(newDOMSource(doc),newStreamResult(newFile(
"src/store.xml")));
}catch(TransformerConfigurationExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(TransformerExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
相关推荐
dom和sax解析的区别,dom的概念,sax的概念
项目下包含dom4j的包 是里用dom4j的sax解析方式 sax解析打文件比dom速度快,该项目为测试项目
java学习笔记——使用DOM解析XML和使用SAX解析XML
一个项目同时用dom解析和sax解析xml文件貌似会报错,项目框架建一直是用sax和dom4j解析xml文件的。当我用dom解析xml文件。导入包后就报错识别不了xml文件的编码格式。于是做了一个sax解析xml文件的实例
dom,dom4j,sax解析xml 文件经典实例,内置详细注解
XML文件解析器 支持dom解析和sax模式解析,c语言实现
JavaWeb 05 XML基础(Dom解析和Sax解析)
本程序实现了实现dom+dom4J创建XML到解析XML,并实行了SAX 解析XML,大家值得学习!
JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax
dom4j下sax解析xml文件 sax解析大文件比dom更快 更节省内存,xml测试文件在src下,可直接运行应用jar包在lib下,无需导入
DOM和SAX解析XML文档
DOM 解析 基本操作 SAX 解析 基本操作 上学期XML的一个小作业,都是一些基本操作,刚学XML的同学们拿来玩玩
结合天气预报服务写的xml的DOM\pull\sax三种解析,分别对XML写出了三种解析办法,大家可以看看
用C#编写的XML解析器,DOM和SAX都有实现
解析XML的dom、sax和dom4j的jar包。解析XML的dom、sax和dom4j的jar包。
用用4中方式(dom4j、jdom、dom、sax)解析xml
一个完整的详细的Dom4JSAX解析实例和SAX解析实例例子!
利用JSP直接读写XML文件,分别用DOM解析器和SAX解析器加以实现,非常适合初学者入门,作为一个了解jsp与XML的台阶
提供了android中使用dom、pull、sax三种方式进行xml解析,xml文件放置在assets文件夹下,view绑定使用butterknife
Sax解析XML文件解