能够操作xml的api还是挺多的,DOM也是可以的,不过在此记录下dom4j的使用,感觉确实挺方便的
所需jar包官网地址:http://www.dom4j.org/dom4j-1.6.1/
dom4j相关的重要类和方法
SAXReader,用于读取外部的xml文件,实例
SAXReader reader=new SAXReader(); Document document=reader.read(new File("f:/test.xml"));
SAXReader 的read方法可以读取外部的xml文件,返回一个Document 对象
Document,dom4j的一个文档对象,用于操作xml文档的结构,可通过调用它的getRootElement()方法获取根元素Element对象
Document document=reader.read(new File("f:/test.xml")); Element root=document.getRootElement();
Element,元素对象,它的方法还是挺多的,是主要操作对象。方法如下:
element("ElementName"),方法可以获取该元素标签中的名称为ElementName的子Element元素对象
Element root=document.getRootElement(); Element element=root.element("红楼梦");
attribute("id") ,获取属性为id的Attribute对象
Attribute attr=element.attribute("id");
addElement("ElementName"),添加一个新的子Element标签,名字为ElementName
addText(""),为element对象添加 text值
Element e=element.addElement("朝代"); e.addText("唐朝");
remove(Attribute),移除一个指定的Attribute对象
Element element=root.element("红楼梦"); Attribute attr=element.attribute("id"); element.remove(attr);
addAttribute("name","value"),添加一个新的属性
element.addAttribute("作者", "wang");
addCDATA("")添加一段不可解析的字符
element.addCDATA("红楼梦是中国四大名著之一");
Attribute,属相对象,操作属性值,通过Element对象的Attribute("")方法获取
XMLWriter,用于输出xml到指定文件
OutputFormat format = OutputFormat.createPrettyPrint(); //格式化输出文件
format.setEncoding("UTF-8");
XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("f:/test2.xml")),format);
xmlWriter.write(document);
实例代码
test.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?> <四大名著> <西游记 id="x001"> <作者>吴承恩1</作者> <作者>吴承恩2</作者> <朝代>明朝</朝代> </西游记> <红楼梦 id="x002"> <作者>曹雪芹</作者> </红楼梦> </四大名著>
执行代码如下:
package util; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class XmlUtil { public static void main(String[] args) { parseXml(); } public static String parseXml(){ String xmlResult = null; SAXReader reader=new SAXReader(); try { Document document=reader.read(new File("f:/test.xml")); Element root=document.getRootElement(); Element element=root.element("红楼梦"); Attribute attr=element.attribute("id"); element.remove(attr); element.addAttribute("作者", "wang"); Element e=element.addElement("朝代"); e.addText("唐朝"); element.addCDATA("红楼梦是中国四大名著之一"); OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("f:/test2.xml")),format); xmlWriter.write(document); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return xmlResult; } }
执行后,生成了test2.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <四大名著> <西游记 id="x001"> <作者>吴承恩1</作者> <作者>吴承恩2</作者> <朝代>明朝</朝代> </西游记> <红楼梦 作者="wang"> <作者>曹雪芹</作者> <朝代>唐朝</朝代><![CDATA[红楼梦是中国四大名住著之一]]> </红楼梦> </四大名著>