1:DOM实例
示例XML文件message.xml:
<?xml version="1.0" encoding="UTF-8"?>
<messages>
<message>电影:七剑主演:甄子丹</message>
<message>电影:神话主演:成龙</message>
<message>电影:世界大战主演:汤姆克鲁斯</message>
<message>电影:喜马拉雅星主演:吴镇宇</message>
</messages>
JSP页面:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ page import="javax.xml.parsers.*,org.w3c.dom.*" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
Dom读取XML文件</title>
</head>
<body>
<%DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse("f:/message.xml");
NodeList nl=doc.getElementsByTagName("message");
for(int j=0;j<nl.getLength();j++)
{
getFirstChild().getNodue();
%>
<%=str %><br>
<%} %>
</body>
</html>
在浏览器中成功输出:
电影:七剑 主演:甄子丹
电影:神话 主演:成龙
电影:世界大战 主演:汤姆克鲁斯
电影:喜马拉雅星 主演:吴镇宇
2:SAX实例
示例XML文件:file.xml
<?xml version="1.0" encoding="gb2312"?>
<common city="jinan" date="11/06/2009">
<file name="英雄" price="120" station="影院1" time="19:00"
description="大片">
</file>
<file name="无间道" price="100" station="影院2" time="18:30"
description="香港">
</file>
<file name="阿甘正传" price="200" station="影院3" time="20:00"
description="好莱坞大片">
</file>
</common>
.java源文件:
package xml;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.DefaultHandler;
public class XMLReader extends DefaultHandler{
private int index;
private Locator locator;
public XMLReader()
{
super();
}
public static void main(String[]args)
{
try
{
SAXParserFactory sf=SAXParserFactory.newInstance();//产生新的SAX流的工厂实例
SAXParser sp=sf.newSAXParser();//用工厂生产出SAX流的实例
XMLReader reader=new XMLReader();
sp.parse(new InputSource("f:/file.xml"), reader);//把目标文件转化为输入流
}
catch (Exception e) {
e.printStackTrace();
}
}
//处理文档解析开始事件
public void startDocument()
{
System.out.println("/n***********************(--电影放映安排--)*******************/n");
}
//处理元素开始事件
public void startElement(String uri,String localName,String qName,Attributes attrs)
{
if(qName.equalsIgnoreCase("file"))
{
index++;
int attrCount=attrs.getLength();
for(int i=0;i<attrCount;i++)
{
String attrName=attrs.getQName(i);
if(attrName.equalsIgnoreCase("name"))
{
System.out.println("/t第"+index+"场,片名<<"+attrs.getValue(i)+">>");
}
if(attrName.equalsIgnoreCase("price"))
{
System.out.println("/t票价:"+attrs.getValue(i));
}
if(attrName.equalsIgnoreCase("station"))
{
System.out.println("/t放映地点:"+attrs.getValue(i));
}
if(attrName.equalsIgnoreCase("time"))
{
System.out.println("/t放映时间"+attrs.getValue(i));
}
if(attrName.equalsIgnoreCase("description"))
{
System.out.println("/t影片简介"+attrs.getValue(i));
}
System.out.println();
}
}
}
//处理文档解析结束事件
public void endDocument() throws SAXException {
System.out.println("/t/t/t/t/t/t/t-----共有"+index+"场电影");
}
//处理元素结束事件
public void endElement(String uri, String localName, String name){
}
//打印致命错误信息
public void fatalError(SAXParseException e) throws SAXException {
super.fatalError(e);
}
//打印普通错误
public void error(SAXParseException e) throws SAXException {
super.error(e);
}
//打印警告信息
public void warning(SAXParseException e) throws SAXException {
super.warning(e);
}
}
成功调试,输出结果:
***********************(--电影放映安排--)************************
第1场,片名<<英雄>>
票价:120
放映地点:影院1
放映时间19:00
影片简介大片
第2场,片名<<无间道>>
票价:100
放映地点:影院2
放映时间18:30
影片简介香港
第3场,片名<<阿甘正传>>
票价:200
放映地点:影院3
放映时间20:00
影片简介好莱坞大片
-----共有3场电影
3:JDOM实例
XML示例文件:city.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book email="guangxu1@yahoo.com.cn">
<name>jinan</name>
</book>
<book email="guangxu2@yahoo.com.cn">
<name>jinan</name>
</book>
<book email="guangxu3@yahoo.com.cn">
<name>jinan</name>
</book>
</books>
.java源文件:
package xml;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
public class JDomXml {
public JDomXml()
{
String xmlpath="f:/city.xml";
SAXBuilder builder=new SAXBuilder();
try
{
Document doc=builder.build(xmlpath);
Element books=doc.getRootElement();
List
for(Iterator
{
Element book=(Element)iter.next();
String email=book.getAttributue("email");
String name=book.getChildTextTrim("name");
System.out.println(email);
System.out.println(name);
book.getChild("name").setText("shandong");
}
XMLOutputter outputter=new XMLOutputter();
outputter.output(doc, new FileOutputStream(xmlpath));
}
catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args)
{
new JDomXml();
}
}
调试成功,输出结果:guangxu1@yahoo.com.cn
jinan
guangxu2@yahoo.com.cn
jinan
guangxu3@yahoo.com.cn
jinan
并把文件中的jinan全部改成了shandong
4:Dom4j实例
XML示例文件:book.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book show="yes">
</book>
<book show="yes">
<title>jsp</title>
</book>
<book show="no">
<title>java</title>
</book>
<owner>guangxu</owner>
</books>
.java源文件
import java.io.File;
import java.io.FileWriter;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4j {
public boolean Dom4j()
try{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new File("f:/book.xml"));
List list = document.selectNodes("/books/book/@show" ); //用xpath查找对象
Iterator
while(iter.hasNext())
{
Attribute attribute = (Attribute)iter.next();
if(attribute.getValue().equals("yes"))
{
attribute.setValue("no");
}
}//如果book节点中show属性的内容为yes,则修改成no
list = document.selectNodes("/books/owner" );
iter = list.iterator();
if(iter.hasNext())
{
Element ownerElement = (Element)iter.next();
ownerElement.setText("Tshinghua");//把owner项内容改为guangxu123
Element dateElement = ownerElement.addElement("date");
dateElement.setText("2004-09-11");
dateElement.addAttribute("type","computer");
}
list = document.selectNodes("/books/book");
iter = list.iterator();
while(iter.hasNext())
{
Element bookElement = (Element)iter.next();
Iterator
while(iterator.hasNext())
{
Element titleElement=(Element)iterator.next();
if(titleElement.getText().equals("jsp"))//若title内容为jsp,则删除该节点
{
bookElement.remove(titleElement);
}
}
}
XMLWriter writer = new XMLWriter(new FileWriter(new File("f:/book.xml")));
writer.write(document);
writer.close();
}
catch(Exception ex){
ex.printStackTrace();
}
return true;
}
public static void main(String[]args)
{
new Dom4j();
}
}
java xml处理空值 java 操作xml
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章