从flowers.xml文件中价格大于15的鲜花删除,将其余鲜花的价格减去5java
用到的Node的API包括:dom
1)Node removeChild(Node oldChild):从子节点列表中移除oldChild所指示的节点,并将其返回ui
2)void setTextContent(String textContent):设置此节点的文本内容spa
flowers.xml文件:code
<?xml version="1.0" encoding="UTF-8"?> <flowers> <flower id="1"> <name>玫瑰</name> <price>10</price> </flower> <flower id="2"> <name>百合</name> <price>20</price> </flower> <flower id="3"> <name>兰花</name> <price>30</price> </flower> </flowers>
WriteNode.java文件orm
import java.io.File; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class WriteNode { /** * @param args */ public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); DocumentBuilder db=dbf.newDocumentBuilder(); Document doc=db.parse("flowers.xml"); //查询全部价格 NodeList list=doc.getElementsByTagName("price"); ArrayList arrayList=new ArrayList(); Node flowers=null; for(int i=0;i<list.getLength();i++){ Node priceNode=list.item(i); String strPrice=priceNode.getTextContent(); double price=Double.parseDouble(strPrice); //得到该价格的父节点 Node flower=priceNode.getParentNode(); //得到flower的父节点 flowers=flower.getParentNode(); if(price>15){ arrayList.add(flower); }else{ //修改价格 String newPrice=String.valueOf(price-5); priceNode.setTextContent(newPrice); } } for(int j=0;j<arrayList.size();j++){ Node flower=(Node)arrayList.get(j); //从flowers中删除flower flowers.removeChild(flower); } //保存文件 TransformerFactory tf=TransformerFactory.newInstance(); Transformer transformer=tf.newTransformer(); DOMSource source=new DOMSource(doc); //将Document对象封装为DOM源 File file=new File("newFlowers.xml"); StreamResult result=new StreamResult(file); //经过StreamResult包装File对象,肯定输出的目标 transformer.transform(source, result); //利用Transformer的transform方法将源输出到目标 //System.out.println("保存成功!!"); } }
运行效果newFlowers.xml文件xml