程式先锋Java技术维客

dom对xml文件的解析,删除,修改

五月 05, 2008 by czl
1.price.xml文件
2.untitled.xml文件
解析,修改,以及删除并写到硬盘上
public class Text {
String url = System.getProperty("user.dir") + "/untitled.xml";
// 解析untitled.xml文件
public void paserxml() {
DocumentBuilderFactory fa = DocumentBuilderFactory.newInstance();
try {
InputStream myfile = new FileInputStream(url);
DocumentBuilder buider = fa.newDocumentBuilder();
Document document = buider.parse(myfile);
//获取根接点,也就是main接点
Element e = document.getDocumentElement();
//获取根接点的所有子接点的集合
NodeList nodelist = e.getChildNodes();
for (int i = 0; i < nodelist.getLength(); i++) {
Node n = nodelist.item(i);
//判断是不是接点
if (n.getNodeType() == Node.ELEMENT_NODE) {
if (n.getNodeName().equals("one")) {
Node innernode = n.getFirstChild().getNextSibling();
System.out.println(innernode.getNodeName());
System.out.println("获取inner的属性名字"
+ innernode.getAttributes()
.getNamedItem("name").getNodeName());
System.out.println("获取inner的属性值"
+ innernode.getAttributes()
.getNamedItem("name").getNodeValue());
System.out.println("获取该接点的文本内容"
+ innernode.getFirstChild().getNodeValue());
}
if (n.getNodeName().equals("two")) {
System.out.println("获取two的接点名称" + n.getNodeName());
System.out.println("获取two的属性值"
+ n.getAttributes().getNamedItem("你")
.getNodeValue());
}
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 对price.xml文件计算当年的年均价格
public void parsepricexml() {
double myprice = 0;
String priceurl = System.getProperty("user.dir") + "/price.xml";
DocumentBuilderFactory fa = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder bu = fa.newDocumentBuilder();
InputStream str = new FileInputStream(priceurl);
Document document = bu.parse(str);
Element e = document.getDocumentElement();
NodeList list = e.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE
&& node.getNodeName().equals("price")) {
myprice = myprice
+ Integer.parseInt(node.getAttributes()
.getNamedItem("num").getNodeValue());
}
}
// 得到个数
int num = list.getLength() / 2;
System.out.println(myprice);
// 得到平均数
myprice = myprice / num;
System.out.println(myprice);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 删除与修改xml文件
public void delxml() {
String myfile = System.getProperty("user.dir") + "/untitled.xml";
System.out.println(myfile);
DocumentBuilderFactory fa = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder bu = fa.newDocumentBuilder();
InputStream stream = new FileInputStream(myfile);
Document document = bu.parse(myfile);
Element element = document.getDocumentElement();
NodeList nodelist = element.getChildNodes();
for (int i = 0; i < nodelist.getLength(); i++) {
Node node = nodelist.item(i);
// 用于two接点的内容操作
if (node.getNodeType() == Node.ELEMENT_NODE
&& node.getNodeName().equals("two")) {
// 修改该接点的文本内容
node.getFirstChild().setNodeValue("cccc");
// 修改该接点的属性内容
node.getAttributes().getNamedItem("蒋伟").setNodeValue(
"jianwgei");
// 增加属性
Attr a = document.createAttribute("a");
a.setValue("123");
node.getAttributes().setNamedItem(a);
// 删除属性该接点的
// node.getAttributes().removeNamedItem("a");
// 删除该two接点
// element.removeChild(node);
}
// 用于one接点的内容操作

if(node.getNodeType()==Node.ELEMENT_NODE && node.getNodeName().equals("one"))
{
//得到inner接点
Node n=node.getFirstChild().getNextSibling();
//添加inner接点属性
Attr ar=document.createAttribute("myname");
ar.setValue("wo hsi jiangwei a");
n.getAttributes().setNamedItem(ar);
//删除myname属性
//n.getAttributes().removeNamedItem("myname");


//删除inner接点
//node.removeChild(node.getFirstChild().getNextSibling());
}
}
///////////////////////////////// 把操作后的内容,写到硬盘上////////////////////////////////
StreamResult re = new StreamResult(myfile);
TransformerFactory tr = TransformerFactory.newInstance();
Transformer tf = tr.newTransformer();
DOMSource dom = new DOMSource(element);
tf.transform(dom, re);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
Text t = new Text();
t.paserxml();
// t.parsepricexml();
t.delxml();
}



发表一条评论:
  • HTML语法: 启用

Search

 

« 九月 2010
星期日星期一星期二星期三星期四星期五星期六
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
       
今天

Feeds

Navigation