从flowers.xml文件中价格大于15的鲜花删除,将其他鲜花的价格减去5
用到的Node的API包括:
1)Node removeChild(Node oldChild):从子节点列表中移除oldChild所指示的节点,并将其返回
2)void setTextContent(String textContent):设置此节点的文本内容
flowers.xml文件:
<?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文件
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文件