<?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();
}
}
}