DOM解析XML
来源:互联网 发布:空地导弹 知乎 编辑:程序博客网 时间:2024/05/17 07:03
/** * 节点类型 NodeType NamedConstant nodeName nodeValue * Element 1 ELEMENT_NODE element name null * Attr 2 ATTRIBUTE_NODE 属性名 属性值 * Text 3 TEXT_NODE #text 节点内容 * @author Administrator * */public class main {public static void main(String[] args) {//创建一个DocumentBuilderFactory的对象DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();try {//创建DocumentBuilder对象DocumentBuilder db = dbf.newDocumentBuilder();//通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下Document document = db.parse("books.xml");//获取所有book节点的集合NodeList bookList = document.getElementsByTagName("book");//通过nodelist的getLength()方法可以获取bookList的长度System.out.println("一共有" + bookList.getLength() + "本书");//遍历每个book节点for (int i = 0; i < bookList.getLength(); i++) {System.out.println("=================下面开始遍历第" + (i + 1) + "本书的内容=================");//通过 item(i)方法 获取一个book节点,nodelist的索引值从0开始Node book = bookList.item(i); //book节点属性集合NamedNodeMap attrs = book.getAttributes();System.out.println("第 " + (i + 1) + "本书共有" + attrs.getLength() + "个属性");//遍历book的属性for (int j = 0; j < attrs.getLength(); j++) {//获取book节点的某一个属性Node attr = attrs.item(j);//获取属性名System.out.print("属性名:" + attr.getNodeName());//获取属性值System.out.println("--属性值" + attr.getNodeValue());}////前提:已经知道book节点有且只能有1个id属性////将book节点进行强制类型转换,转换成Element类型//Element book = (Element) bookList.item(i);////通过getAttribute("id")方法获取属性值//String attrValue = book.getAttribute("id");//System.out.println("id属性的属性值为" + attrValue);//book节点的子节点NodeList childNodes = book.getChildNodes();//遍历childNodes获取每个节点的节点名和节点值System.out.println("第" + (i+1) + "本书共有" + childNodes.getLength() + "个子节点");for (int k = 0; k < childNodes.getLength(); k++) {//区分出text类型的和lement类型的nodeif (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {//获取了element类型节点的节点名System.out.print("第" + (k + 1) + "个节点的节点名:" + childNodes.item(k).getNodeName());//获取了element类型节点的节点值System.out.println("--节点值是:" + childNodes.item(k).getFirstChild().getNodeValue());//System.out.println("--节点值是:" + childNodes.item(k).getTextContent());}}System.out.println("======================结束遍历第" + (i + 1) + "本书的内容=================");}} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
public class main {public DocumentBuilder getDocumentBuilder(){// 创建一个DocumentBuilderFactory的对象DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();// 创建DocumentBuilder对象DocumentBuilder db =null;try {db = dbf.newDocumentBuilder();} catch (ParserConfigurationException e) {e.printStackTrace();}return db;}/** * 生成xml */public void createXML(){DocumentBuilder db = getDocumentBuilder();Document document = db.newDocument();document.setXmlStandalone(true);Element bookstore = document.createElement("bookStore");//向bookstore根节点中添加子节点bookElement book = document.createElement("book");Element name = document.createElement("name");//name.setNodeValue("小王子");name.setTextContent("小王子");book.appendChild(name);book.setAttribute("id", "1");//将book节点添加到bookstore根节点中bookstore.appendChild(book);//将bookstore节点(已经包含了book)添加到dom树中document.appendChild(bookstore);//创建TransformerFactory对象TransformerFactory tff = TransformerFactory.newInstance();try {//创建Transformer对象Transformer tf = tff.newTransformer();tf.setOutputProperty(OutputKeys.INDENT, "yes");tf.transform(new DOMSource(document),new StreamResult(new File("books1.xml")));} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (TransformerException e) {e.printStackTrace();}}public static void main(String[] args) {main creatXml = new main();creatXml.createXML();}}
0 0
- XML DOM---解析xml dom
- 【XML】DOM解析XML
- 解析xml dom 解析
- xml解析 Dom解析
- dom解析xml
- dom解析 xml
- dom解析xml
- 解析xml之--DOM
- Dom解析XML文档
- DOM解析XML文件
- dom解析xml
- dom解析xml
- xml文件解析-DOM
- JAVA解析XML DOM
- DOM解析XML
- JAVA解析XML DOM
- XML DOM解析
- JAVA解析XML DOM
- ios 资料
- Asp.net 去掉html中的标记.txt
- C语言的变量的内存分配
- shiro配置
- 二叉树的遍历(递归和非递归)
- DOM解析XML
- CAGradientLayer的使用
- 新浪面试题 快速排序非递归实现
- spark小技巧-mapPartitions
- Android-在线查看源码
- 移动端APP产品设计需要考虑哪些因素?
- android 事件总线 -- Otto(一)
- redis主从切换的重订阅
- js中||和&&短路原理,精简代码方法