XML解析
什么是DOM
DOM全称Document Object Model文档对象模型,将文档中的元素或者其他节点转换成一个一个的对象使用java代码操作XML或者js代码操作HTML DOM解析的特点 在加载的时候一次性把整个的XML文档载入内存,在内存中形成一颗树(Document对象) 之后使用代码去操作Document对象,其实是操作的是内存当中的DOM树,和本地磁盘中的XML文件没有直接关系 由于操作的是内存当中的dom,磁盘中的xml内容并没有变所以,在操作完之后要进行同步 缺点:若xml文件过大可能会造成内存溢出
DOM的解析步骤
1.创建解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
通过解析器工厂对象创建解析器
DocumentBuilder builder = factory.newDocumentBuilder();
通过解析器解析xml得到document对象
Document doc = builder.parse("src/xml/text.xml");
document对象筛选节点列表nodes
NodeList nodes = doc.getElementsByTagName("students");
节点列表再去确定唯一的节点node
Node node =nodes.item(0);
获取节点内容
System.out.println(node.getTextContent());
修改节点内容并同步
node.setTextContent("ss");
System.out.println(node.getTextContent());
Transformer transform = TransformerFactory.newInstance().newTransformer();
transform.transform(new DOMSource(doc),new StreamResult("src/xml/text.xml"));
删除元素节点
node.getParentNode().removeChild(node);
增添元素节点
Element newElement = doc.createElement("newElement");
newElement.setTextContent("内容");
node.appendChild(newElement);
增添属性节点
Element e = (Element)node;
e.setAttribute("属性名","属性值");
什么是dom4j
DOM4J是dom4j.org出品的一个开源XML解析包 dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件 越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。
dom4j解析步骤
1.创建解析器
SAXReader reader = new SAXReader();
2.解析器解析xml得到document对象
Document doc = reader.read("src/xml/text.xml");
3.获取doc根元素
Element root = doc.getRootElement();
4.遍历根元素下的元素,并找到所有元素下的name元素
List<Element> list = root.elements();
for (Element element : list) {
Element name = element.element("name");
System.out.println(name.getText());
}
5.同步到文件
Writer wr = new OutputStreamWriter(new FileOutputStream("src/xml/text.xml"),"UTF-8");
doc.write(wr);
wr.close();
6.增加元素设置属性
Element newElement = root.addElement("newElement");
newElement.addAttribute("属性名","值");
newElement.setText("内容");