XML(九)-使用DOM来生成xml文档
来源:互联网 发布:易语言客户端发送数据 编辑:程序博客网 时间:2024/05/16 17:22
使用DOM来生成xml文档
对于生成xml文档来说需要以下几个类的支持
下面这端代码就是生成图中的xml文档的
package cn.org.kingdom.dom;import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Attr;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;public class DomCreateDemo { public static void main(String[] args) throws Exception { // 建立DocumentBuilderFactory对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; Document doc = null; db = dbf.newDocumentBuilder(); doc = db.newDocument(); // 建立节点 Element student = doc.createElement("student"); // 创建属性节点 Node sex = (Node) doc.createAttribute("sex"); // 设置属性节点的值 sex.setNodeValue("男"); // 设置属性节点到student节点上 student.setAttributeNode((Attr) sex); // 建立id节点 Element id = doc.createElement("id"); // 建立名字节点 Element name = doc.createElement("name"); // 建立年龄节点 Element age = doc.createElement("age"); // 为id节点添加内容 id.appendChild(doc.createTextNode("id01")); // 为name节点添加内容 name.appendChild(doc.createTextNode("张三")); // 为年龄节点添加内容 age.appendChild(doc.createTextNode("15")); // 将三个子节点加入到父节点中 student.appendChild(id); student.appendChild(name); student.appendChild(age); // 将根元素加入到根节点上 doc.appendChild(student); // 输出文档到文件 TransformerFactory tf = TransformerFactory.newInstance(); Transformer t = null; t = tf.newTransformer(); // 设置编码 // 创建源t.setOutputProperty(OutputKeys.ENCODING) DOMSource ds = new DOMSource(doc); // 创建目标 StreamResult result = new StreamResult(new File("src/output.xml")); // 输出 t.transform(ds, result); }}
下面再来看一个例子,如何使用DOM来解析任意的XML文档(这里不考虑一些复杂的xml)
xml文档的原型如下
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><persons> <!-- this is comment --> <person id = "p01"> <name>张三</name> <age>15</age> <address>南京市</address> </person> <person id = "p02"> <name>李小龙</name> <age>20</age> <address>美国</address> </person></persons>
下面是java代码
package cn.org.kingdom.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 org.w3c.dom.Attr;import org.w3c.dom.Comment;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;/** * 解析整个XML文档 * 递归操作 */public class TestDemo03 { public static void main(String[] args) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File("src/test2.xml")); Element root = doc.getDocumentElement(); parseElement(root); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private static void parseElement(Element el) { String tagName =el.getTagName(); NodeList list = el.getChildNodes(); System.out.print("<"+tagName); //判断是否有属性 NamedNodeMap mnm = el.getAttributes(); if(mnm!=null) { for (int i = 0; i < mnm.getLength(); i++) { Attr attr = (Attr) mnm.item(i); String attr_name = attr.getName(); String attr_value = attr.getValue(); System.out.print(" "+attr_name+"=\""+attr_value+"\""); } } System.out.print(">"); for (int i = 0; i < list.getLength(); i++) { Node node = list.item(i); if(node.getNodeType()==node.ELEMENT_NODE) { parseElement((Element) node); }else if(node.getNodeType()==node.TEXT_NODE) { System.out.print(node.getNodeValue()); }else if(node.getNodeType()==node.COMMENT_NODE){ System.out.println("<!--"+((Comment)node).getData()+"-->"); } } System.out.println("</"+tagName+">"); }}
更多内容,请参考Java api
阅读全文
0 0
- XML(九)-使用DOM来生成xml文档
- 使用DOM来解析XML文档
- 使用XML DOM生成XML
- 利用DOM生成XML文档
- [Perl]利用XML::DOM生成XML文档
- [Perl]利用XML::DOM生成XML文档
- 使用DOM技术来对XML文档进行解析范例
- 使用DOM编辑XML文档
- 使用DOM操作XML文档
- 使用 DOM 操作 XML 文档
- 使用DOM创建XML文档
- 使用DOM解析XML文档
- 使用DOM解析XML文档
- 使用DOM 解析XML文档
- 利用DOM来处理XML文档(zz)
- 用DOM来创建XML文档
- 使用DOM生成XML文件
- 使用XML DOM生成XML(1)
- 灵活构建和拼接Laravel的SQL语句
- 面向对象-异常机制
- XML(七)-DOM解析
- XML(八)-XML的DOM解析
- ZCMU-1017: 勇者斗恶龙
- XML(九)-使用DOM来生成xml文档
- XML(十)- SAX解析
- Gradle for mac 安装配置
- Java8学习笔记(一)-初步认识Lambda表达式
- mac下面安装mysql问题
- Java8学习笔记(二)-函数式接口与方法引用
- Java8学习笔记(三)-Lambda表达式深入与流初步
- Java8学习笔记(四)-Function接口详解
- 初见