现在的位置: 首页 > 综合 > 正文

XML基础–解析(Dom4J)

2017年11月27日 ⁄ 综合 ⁄ 共 3128字 ⁄ 字号 评论关闭

1.利用dom4j构建xml文档,并且输出到控制台上和文件中

       public static void main(String[] args) throws Exception {
	  //创建文档并设置文档的根元素节点
		//第一种方式
		Document document=DocumentHelper.createDocument(); //创建文档根节点
		Element root=DocumentHelper.createElement("persons");//创建XML文档元素
		document.setRootElement(root); 					//设置为根元素
		//第二种方式
		//Document document=DocumentHelper.createDocument(DocumentHelper.createElement("persons"));
		Element e1= root.addElement("person");    //根元素添加元素person,返回的是新添加的元素
		e1.addAttribute("stuno", "001");		  //person元素添加属性
		e1.addElement("name").setText("cash");	  //person元素添加子元素name,gender,age,并为其设置值
		e1.addElement("gender").setText("female");
		e1.addElement("age").setText("20");
		
	 //输出构建好的xml文档
		//输出到控制台,没有进行格式化
		XMLWriter xmlWriter=new XMLWriter();
		xmlWriter.write(document);
		//输出到文件中,并在输出时对xml文档进行格式化(使用文件输出字节流)
		OutputFormat format=new OutputFormat("    ", true);//自定义xml的格式化方式,每行前面空四格,并且每行输出后换行
		XMLWriter xmlWriter2=new XMLWriter(new FileOutputStream("persons.xml"),format);//使用带格式化参数的XMLWriter构造器,构造XMLWriter
		xmlWriter2.write(document);
		//输出到文件中,并在输出时对xml文档进行格式化(使用文件输出字符流)
		XMLWriter xmlWriter3=new XMLWriter(new FileWriter("person.xml"),format);
		xmlWriter3.write(document);
		xmlWriter3.flush();//必须要将writer强制输出或者关闭,其内部是将构建的FileWirter流关闭
	}

2.利用dom4j读取已有的xml文档,输出到控制台上

1>使用SAXReader解析XML文档:

                SAXReader saxReader=new SAXReader();//构建SAXReader解析器
		Document document=saxReader.read(new File("person.xml")); //读取XML文档,构建Document文档对象
		Element root=document.getRootElement(); //获取文档的根节点
		parseXMLSAXReader(root);				//利用递归循环读取XML文档内容

		private static void parseXMLSAXReader(Element element){
		System.out.print("<"+element.getName());
		List<Element> elements=element.elements(); //获取节点下的所有子节点
		List<Attribute> attributes=element.attributes();//获取节点下的所有属性
		if(null!=attributes){
			for (Attribute attr:attributes) { 		//迭代属性
				String attrname=attr.getName();
				String attrvalue=attr.getValue();
				System.out.print(" "+attrname+"=\""+attrvalue+"\"");
			}
		}
		System.out.print(">");
		if(null!=elements&&0!=elements.size()){		//迭代子节点
			for(Iterator<Element> iterator=elements.iterator();iterator.hasNext();){
				Element e=iterator.next();
				parseXMLSAXReader(e);
			}
		}else{
			System.out.print(element.getText());	//节点下没有子节点,将节点内容输出
		}
		System.out.print("</"+element.getName()+">");
	}

2>利用DomReader解析XML文档

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
		DocumentBuilder builder=factory.newDocumentBuilder();
		org.w3c.dom.Document document2=builder.parse(new File("persons.xml"));
		DOMReader domReader=new DOMReader();	//构建DOMReader解析器
		Document document3=domReader.read(document2);
		Element root1=document3.getRootElement();
		parseXMLDom4jReader(root1);
private static void parseXMLDom4jReader(Element element){
		System.out.print("<"+element.getName());
		List<Element> elements=element.elements(); //获取节点下的所有子节点
		List<Attribute> attributes=element.attributes();//获取节点下的所有属性
		if(null!=attributes){
			for (Attribute attr:attributes) { 		//迭代属性
				String attrname=attr.getName();
				String attrvalue=attr.getValue();
				System.out.print(" "+attrname+"=\""+attrvalue+"\"");
			}
		}
		System.out.print(">");
		if(null!=elements&&0!=elements.size()){		//迭代子节点
			for(Iterator<Element> iterator=elements.iterator();iterator.hasNext();){
				Element e=iterator.next();
				parseXMLDom4jReader(e);
			}
		}else{
			System.out.print(element.getText());	//节点下没有子节点,将节点内容输出
		}
		System.out.print("</"+element.getName()+">");
	}

抱歉!评论已关闭.