首页 > 代码库 > xml
xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <books> 3 <book id="B001"> 4 <name><西游记</name> 5 <author>吴承恩</author> 6 <publisher>人民邮电出版社</publisher> 7 </book> 8 <book id="B002"> 9 <name>&三国演义</name> 10 <author>罗贯中</author> 11 <publisher>清华大学出版社</publisher> 12 </book> 13 <book id="B003"> 14 <name>水浒传</name> 15 <author>施耐庵</author> 16 <publisher><![CDATA[<29]]></publisher> 17 </book> 18 </books>
/** * 将xml文件转换成一个org.w3c.dom.Document对象 * Document:文档树 * Node:节点(Element元素,Attribute属性,Text文本..) * getNodeType():获取Node节点的类型 * * NodeList:节点列表 * getLength():获取节点列表的个数 * item(int i):在节点列表中根据下标获取该下标对应的节点 * * Element:元素 * NodeList getChildNodes():获取当前元素的子节点列表 * getAttribute(String attrName):获取指定属性名称对应的属性值 * getTextContent():获取该元素中的文本 * * 使用DOM解析xml文件的步骤: * 1.创建解析器工厂对象 * DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); * 2.由 解析器工厂对象创建解析器对象 * DocumentBuilder db = dbf.newDocumentBuilder(); * 3.由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象 * Document document = db.parse(new FileInputStream("product.xml")); * 4.以Document对象为起点对DOM树的节点进行增删改查操作。 * */ public class TestDOM { public static void main(String[] args) throws Exception{ //1.创建一个解析器工厂对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); //2.由 解析器工厂对象创建解析器对象 DocumentBuilder db = dbf.newDocumentBuilder(); //3.由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象 Document document = db.parse(new FileInputStream("product.xml")); //4.获取根节点:products Element productsElement = document.getDocumentElement(); System.out.println(productsElement.getTagName()); //获取根节点的子节点: product NodeList productNodeList = productsElement.getChildNodes(); for (int i = 0; i < productNodeList.getLength(); i++) { Node node = productNodeList.item(i);//product #text if(node.getNodeType()==Node.ELEMENT_NODE){//判断该节点是否为元素 // System.out.println(node.getNodeName()); Element productElement = (Element)node; String id = productElement.getAttribute("id");//通过属性名称获取属性的值 System.out.println("id="+id); //获取product节点的子节点 NodeList productChildNodeList =productElement.getChildNodes(); for (int j = 0; j < productChildNodeList.getLength(); j++) { Node childNode = productChildNodeList.item(j); if(childNode.getNodeType()==Node.ELEMENT_NODE){//判断该节点是否为元素 Node.ELEMENT_NODE值为1 Element childElement = (Element)childNode;//name,price,color.... String text = childElement.getTextContent();//获取文本节点的值 System.out.println("\t"+childElement.getTagName()+"="+text); } } } } } }
/** * * 从src下将book.xml文件转换成一个org.w3c.dom.Document对象 * Document:文档树 * Node:节点(Element元素,Attribute属性,Text文本..) * getNodeType():获取Node节点的类型 * * NodeList:节点列表 * getLength():获取节点列表的个数 * item(int i):在节点列表中根据下标获取该下标对应的节点 * * Element:元素 * NodeList getChildNodes():获取当前元素的子节点列表 * getAttribute(String attrName):获取指定属性名称对应的属性值 * getTextContent():获取该元素中的文本 * * 使用DOM解析xml文件的步骤: * 1.创建解析器工厂对象 * DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); * 2.由 解析器工厂对象创建解析器对象 * DocumentBuilder db = dbf.newDocumentBuilder(); * 3.由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象 * Document document = db.parse(new FileInputStream("product.xml")); * 4.以Document对象为起点对DOM树的节点进行增删改查操作。 * */ public class TestDOM2 { public static void main(String[] args) throws Exception{ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); // Document document = db.parse("src/book.xml");//如果文件的路径不正确将抛出FileNotFoundException异常 //getResourceAsStream("/book.xml")--->将类路径根目录下的book.xml转换成输入流 InputStream ips = TestDOM2.class.getResourceAsStream("/book.xml"); Document document = db.parse(ips);//如果文件的路径不正确将抛出FileNotFoundException异常 Element booksElement = document.getDocumentElement(); NodeList bookNodeList = booksElement.getChildNodes(); for (int i = 0; i < bookNodeList.getLength(); i++) { Node node = bookNodeList.item(i); if(node.getNodeType()==Node.ELEMENT_NODE){ Element bookElement = (Element)node; String id = bookElement.getAttribute("id"); System.out.println("id="+id); NodeList bookChildNodeList = bookElement.getChildNodes(); for (int j = 0; j < bookChildNodeList.getLength(); j++) { Node childNode = bookChildNodeList.item(j); if(childNode.getNodeType()==Node.ELEMENT_NODE){ Element childElement = (Element)childNode; String text = childElement.getTextContent(); System.out.println("\t"+text); } } } } } }
dom4j:第三方的解析和写入xml的专有类库
/** *dom4j:第三方的解析和写入xml的专有类库 *步骤: *1. 将dom4j类库(dom4j-1.6.1.jar)添加到项目中. * 新建一个lib/libs目录,将类库复制到该目录,右键-->add to build path *2.使用dom4j的工具加载xml文件,并将xml文件转换成一个Document对象 *3.对Document对象进行操作(获取子元素,属性,文本等内容) * */ public class TestDom4j { public static void main(String[] args) throws Exception{ //1.创建SAXReader对象 SAXReader saxReader = new SAXReader(); //2.利用SAXReader的read方法将文件转换为一个Document对象 Document document = saxReader.read(new File("product.xml")); //3.获取Document对象中的元素,元素的属性,文本等信息 Element root = document.getRootElement();//获取文档的根节点 products Iterator<Element> productIter = root.elementIterator();//获取子元素的迭代器 while(productIter.hasNext()){ Element productElement = productIter.next();//获取product元素 String id = productElement.attributeValue("id");//通过属性名称获取该属性的值 System.out.println("id="+id); Iterator<Element> childIter = productElement.elementIterator();//获取product元素的迭代器 while(childIter.hasNext()){ Element childElement = childIter.next();//获取product元素的子元素(name,price....) String name = childElement.getName();//获取元素名称 String text = childElement.getText();//获取文本节点信息 System.out.println("\t"+name+"="+text); } } } }
xml
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。