一、XML解析方式有两类:
一】DOM(文档对象模型)
1)一次性将整个XML文件读到内存,形成一颗DOM树
二】SAX(XML的简单API)[simple API for XML]
1)SAX多次将XML文件的每部分读到内存
二、步骤:
一】利用SAXReader类获取Document对象
SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File("src/com/suse/simpledom4j/car.xml"));
二】通过Document获取元素和属性
常用方法:
得到子元素的List集合: List elements() 得到元素的名称: String getName() 得到指定子元素引用: Element element("子元素名称"); 得到子元素封装的信息: String elementText("子元素名称"); 得到元素的属性值: String attributeValue("属性名"); 添加一个子元素: Element addElement("子元素名称"); 设置元素封装的信息: void setText("封装的信息"); 删除一个子元素: boolean remove(子元素引用); 将元素转换成字符串: String asXML();
三】通过XMLWriter类将内存中的XML文件回写到硬盘上
常用类及方法:
1)OutputFormat对象:制定流的输出时在文档中的显示格式 常用方法: 返回一个优美的格式器对象:static OutputFormat createPrettyPrint(); 2) XMLWriter流对象:用于将内存中的XML文件输出到硬盘上 构造方法: XMLWriter(输出流) 常用方法: 将内存中的XML写入到硬盘上:void writer(Document document); 关闭流:void close();
三、对XML文件进行增删改查
code:
private Document getDocument() throws Exception { SAXReader saxReader = new SAXReader(); Document document = saxReader.read(new File("src/com/suse/simpledom4j/car.xml")); return document; } @Test public void add() throws Exception { Document document = getDocument(); Element element = document.getRootElement(); Element carElement = (Element) element.elements().get(0); Element priceElement = carElement.addElement("价格"); priceElement.setText("20万"); doc2XML(document); } @Test public void delete() throws Exception { Document document = getDocument(); Element element = document.getRootElement(); List<Element> elmentList = element.elements(); Element carElement = elmentList.get(0); Element priceElement = carElement.element("价格"); carElement.remove(priceElement); doc2XML(document); } @Test public void update() throws Exception { Document document = getDocument(); Element rootElement = document.getRootElement(); Element carElement = (Element) rootElement.elements().get(0); carElement.element("价格").setText("60万元"); doc2XML(document); } @Test public void select() throws Exception { Document document = getDocument(); Element rootElement = document.getRootElement(); Element carElement = (Element) rootElement.elements().get(0); String price = carElement.element("价格").getTextTrim(); System.out.println("价格为:" + price); } private void doc2XML(Document doc) throws Exception { //得到一个格式优美的格式输出器 OutputFormat outputFormat = OutputFormat.createPrettyPrint(); File file = new File("src/com/suse/simpledom4j/car.xml"); XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(file), outputFormat); xmlWriter.write(doc); xmlWriter.close(); }
四、其它API
一】 DocumentHelper对象:
static Document createDocument();//创建一个Document对象 static Element createElement("元素名");//创建一个元素,并返回此元素的子类【注:可以使用】 static Document parseText("符合XML格式的字符串");//创建一个document对象并返回
二】在指定位置插入节点元素
----通过List集合的add(index,E)方法
方法原型:
void add(int index, E element);
三】字符串与XML文件的转换
1)字符串 ---> XML
通过parseText方法
eg:
String text = "<members> <member>sitinspring</member></members>"; Document dDocument = DocumentHelper.parseText(text);
2)XML ---> 字符串
通过asXML方法:Document、和Element对象都具有此方法
eg:
SAXReader reader = new SAXReader(); Document document = reader.read(new File("input.xml")); Element rootElement = docuemnt.getRootElement(); Element memberElement = root.element("member"); String str_doc = document.saXML(); String str_rootEle = rootElement.asXML(); String str_memberEle = memberElement.asXML();
时间: 2024-10-10 11:08:00