DOM生成XML文档与解析XML文档(JUNIT测试)

 1 package cn.liuning.test;

 2 

 3 import java.io.File;

 4 import java.io.IOException;

 5 

 6 import javax.xml.parsers.DocumentBuilder;

 7 import javax.xml.parsers.DocumentBuilderFactory;

 8 import javax.xml.parsers.ParserConfigurationException;

 9 import javax.xml.transform.Result;

10 import javax.xml.transform.Source;

11 import javax.xml.transform.Transformer;

12 import javax.xml.transform.TransformerException;

13 import javax.xml.transform.TransformerFactory;

14 import javax.xml.transform.dom.DOMSource;

15 import javax.xml.transform.stream.StreamResult;

16 

17 import org.junit.Test;

18 import org.w3c.dom.Document;

19 import org.w3c.dom.Element;

20 import org.w3c.dom.Node;

21 import org.w3c.dom.NodeList;

22 

23 public class Demo1

24 {

25     

26     @Test//dom生成XML文档

27     public void createdXmlbyDom() throws ParserConfigurationException, TransformerException

28     {

29          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  

30          DocumentBuilder builder = factory.newDocumentBuilder(); 

31          Document document = builder.newDocument();

32          //加入根结点

33          Element rootElement = document.createElement("xml");  

34          //新建子结点

35          Element toUserName = document.createElement("ToUserName"); 

36          //设置属性

37          toUserName.setAttribute("id", "id_1");

38          //设置内容

39          String str = "<![CDATA[gh_1c586f95bd68]]>"; 

40          toUserName.setTextContent(str);

41          Element fromUserName = document.createElement("FromUserName");

42          fromUserName.setAttribute("id", "id_2");

43          String str1 = "<![CDATA[ogNtkuMTj4uOx-DCvLfu8mUDmubM]]>"; 

44          fromUserName.setTextContent(str1);

45 

46          Element createTime = document.createElement("CreateTime");

47          createTime.setAttribute("id", "id_2");

48          String str2 = "1403313142"; 

49          createTime.setTextContent(str2);

50          

51          Element createTime1 = document.createElement("CreateTime");

52          createTime1.setAttribute("id", "id_2");

53          String str3 = "Test"; 

54          createTime1.setTextContent(str3);

55          

56          rootElement.appendChild(toUserName);

57          rootElement.appendChild(fromUserName);

58          rootElement.appendChild(createTime);

59          rootElement.appendChild(createTime1);

60          

61          document.appendChild(rootElement); 

62          

63          TransformerFactory transformerFactory = TransformerFactory.newInstance();

64          Transformer transformer = transformerFactory.newTransformer();

65          Source xmlSource = new DOMSource(document);

66 

67          Result outputTarget = new StreamResult(new File("src/book1.xml"));  

68          transformer.transform(xmlSource, outputTarget);

69          System.out.println("成功");

70     }

71     @Test//dom解析XML文档

72     public void read() throws ParserConfigurationException, Exception, IOException

73     {

74         //1.新建工厂        

75         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

76         //2.得到dom解析器

77         DocumentBuilder builder = factory.newDocumentBuilder();

78         //3.得到代表文档的document上

79         Document document =  builder.parse("src/book1.xml");    

80 

81         System.out.println(document.getInputEncoding());//得到文档编码

82     

83         //通过标签名获取标签,得到的是一个list集合

84         //NodeList list = document.getElementsByTagName("CreateTime");

85         NodeList list = document.getElementsByTagName("xml");

86         

87         //常用方法

88         System.out.println(list.getLength());//可以输出list的长度

89         Node node = list.item(0); //得到第几个结点

90         

91         //node方法

92         System.out.println(node.getNodeName());//得到结点名称,输出CreateTime

93         System.out.println(node.hasAttributes());//是否有属性,输出true

94         System.out.println(node.hasChildNodes());//是否有孩子,输出true

95         String content = node.getTextContent();//获取结点内容

96         System.out.println(content);

97 

98     }

99 }

 

你可能感兴趣的:(JUnit)