XML--笔记

<?xml version="1.0" encoding="utf-8"?>

内部DTD

<!DOCTYPE 根元素[

          <!ELEMENT 元素名 (子元素+/?/*)                    (+:表示1次或多次,?:表示0次或1次,*:任意次)

          <!ELEMENT 元素名 (#PCDATA)         只能是文本

          属性   <!ATTLIST 元素名称 属性名称 属性类型 默认值 >

                                属性类型:CDATA  字符串类型

                                默认值:#REQUIRED,必须

                                              #IMPLIED,不必须

]>

 

例如:

<!DOCTYPE people[

           <!ELEMENT people (student*)>

           <!ELEMENT student (name, age)>

           <!ATTLIST student id CDATA #REQUIRED >

           <!ELEMENT name (#PCDATA)>

            <!ELEMENT age (#PCDATA)>

]>

<people>

           <student id="1">

                            <name>ok</name>

                            <age>12</age>

           </student>

</people>

外部DTD

创建dtd文件,写法与上面一致

在xml中引入:<!DOCTYPE 根元素 SYSTEM "文件名“>

例如:<!DOCTYPE people SYSTEM "people.dtd">

dom4j

读取xml

//创建SAXReader对象
SAXReader reader = new SAXReader();
try {
	//读取xml,获得document对象
	Document doc = reader.read(new File("src/people.xml"));
	//获取根
	Element root = doc.getRootElement();
	System.out.println(root.getName());
	System.out.println("------------");
	//获取根元素所有元素
	Iterator<?> it = root.elementIterator();
	while(it.hasNext()) {
		Element e = (Element) it.next();
		System.out.println(e.getName());
		//获取id(属性)
		Attribute id = e.attribute("id");
		//获取student子元素
		Element name = e.element("name");
		Element age = e.element("age");
		System.out.println(id.getName() +":"+id.getValue());
		System.out.println(name.getName()+":"+name.getText());
		System.out.println(age.getName()+":"+age.getText());
		System.out.println("------------");
	}
} catch (DocumentException e) {
	e.printStackTrace();
}

写XML

Document doc = DocumentHelper.createDocument();
	//添加根
	Element books = doc.addElement("books");
	//添加元素
	Element book = books.addElement("book"	);
	//添加属性
	book.addAttribute("id", "1");
	//添加元素
	Element name = book.addElement("name");
	Element author = book.addElement("author");
	//添加文本
	name.addText("java");
	author.addText("独角兽");
	OutputFormat format = OutputFormat.createPrettyPrint();
	
	XMLWriter writer = null;
	try {
		writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(new File("src/books.xml")),"utf-8"),format);
		//writer = new XMLWriter(new FileWriter(new File("src/books.xml")), format);
		writer.write(doc);
	} catch (IOException e) {
		e.printStackTrace();
	}finally {
		try {
			if(null != writer) {
				writer.close();
			} 
		}catch (IOException e) {
			e.printStackTrace();
		}
	}

dom4j的Xpath

要导入jaxen-1.1-beta-6.jar包

root.selectSingleNode("//name");       //获取第一个name元素

root.selectNodes("//name");               //获取所有name元素,返回list

//name--其他语句看文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值