`
emowuyi
  • 浏览: 1480946 次
文章分类
社区版块
存档分类
最新评论

xml中dom的增加和删除、sax的解析(No.21)

 
阅读更多

<?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>

实现SAXstore解析:

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;

}

}

实现DOMstore的增加和修改:

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

}

}

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics