流沙团
JAVA操作XML文件 - DOM操作
2016-6-11 流沙团


主要是CRUD操作 U操作,没有更新!












package com.gyarmy.dom;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import junit.framework.Assert;

import org.junit.Test;
import org.w3c.dom.*;
import org.xml.sax.SAXException;

public class TestDom {

//获取内容
@Test
public void testReadXML() throws ParserConfigurationException, SAXException, IOException{
Document document = getDocument();

NodeList nl = document.getElementsByTagName("书名");

int length = nl.getLength();

//System.out.println(length);
Node firstNode = nl.item(0);
String result = firstNode.getTextContent();
//System.out.println(result);
Assert.assertEquals("明朝那些事儿", result);

}

//获取属性
@Test
public void testReadAttribute() throws ParserConfigurationException, SAXException, IOException{
//获取document;
Document document = getDocument();
NodeList nl = document.getElementsByTagName("书");
Element firstNode = (Element)nl.item(0);
String result = firstNode.getAttribute("出版社");
Assert.assertEquals("深圳出版社", result);

}

//添加节点
@Test
public void testAddPrice() throws ParserConfigurationException, SAXException, IOException, TransformerException
{
Document document = getDocument();
//创建节点
Element newElement = document.createElement("price");
newElement.setTextContent("打折9.8");

//得到节点
NodeList nl = document.getElementsByTagName("书");
Node firstNode = nl.item(0);
//添加节点
firstNode.appendChild(newElement);
writeBackToXML(document);
}



//删除节点
@Test
public void testRemovePrice() throws ParserConfigurationException, SAXException, IOException, TransformerException
{
Document document = getDocument();
//得到节点
NodeList nlk = document.getElementsByTagName("price");
Element delElement = (Element)nlk.item(0);

//得到节点
NodeList nl = document.getElementsByTagName("书");
Node firstNode = nl.item(0);
//删除节点
firstNode.removeChild(delElement);

writeBackToXML(document);
}

//更新节点
@Test
public void updatePrice() throws ParserConfigurationException, SAXException, IOException
{

}

//打印及诶单元素
@Test

public void printAllElements()throws ParserConfigurationException, SAXException, IOException
{

Document document = getDocument();
NodeList nl = document.getElementsByTagName("书");
for(int i=0;i<nl.getLength();i++)
{
Node node = nl.item(i).getFirstChild();
while(true)
{
Node nextNode = node.getNextSibling();
if(nextNode == null)
{
break;
}
String nodeName = nextNode.getNodeName();
if(nodeName!="#text")
{
String nodeValue = nextNode.getTextContent();
System.out.println(nodeName+" : "+nodeValue);
}
node = nextNode;
}
System.out.println();
}

System.out.println("www.gyarmy.com");
}

@Test
public void printElementName() throws ParserConfigurationException, SAXException, IOException
{
Document document = getDocument();
printAllElementsName(document);
}
public void printAllElementsName(Node node)
{
if(Node.ELEMENT_NODE == node.getNodeType())
{
System.out.println(node.getNodeName());
}

NodeList nodes = node.getChildNodes();
for(int i=0;i<nodes.getLength();i++)
{
//System.out.println(nodes.item(i).getNodeName());

printAllElementsName(nodes.item(i));
}


}

private Document getDocument() throws ParserConfigurationException,
SAXException, IOException {
//获得XML对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/demo1.xml");
return document;
}

private void writeBackToXML(Document document)
throws TransformerFactoryConfigurationError,
TransformerConfigurationException, TransformerException {
//写入文件
//TransformerFactory.newTransformer
TransformerFactory factory = TransformerFactory.newInstance();
Transformer tf = factory.newTransformer();

tf.transform(new DOMSource(document),new StreamResult(new File("src/demo1.xml")));
}

}





发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容