实现读取xml的内容的操作:SAXReader方法初解


有时候我们需要实现一些数据的持久化的操作,但是使用数据库有太麻烦而且没必要的时候就可以使用xml实现数据的持久化的操作,xm不进能传递数据还能存储数据;是个好东西哦,下面我们就来试试在4jDom下的SAXReader方法实现的xml的数据的读取的操作:

   1.首先写一个xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<message>
  <body>
    <ticketNotify>
      <ticket id="6000012007051000000231" dealTime="20070510165423" status="0000" message="asdaasdsdas" />
</ticketNotify></body></message>
写完xml之后在写一个java方法来读取这个配置文件:

package xml;

import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class TestXml {

	/**
	 * 读取xml中的数据,实现xml的持久化的操作
	 */
	public static void main(String[] args) {
		try {
			// 创建xml解析对象
			SAXReader reader = new SAXReader();
			// 定义一个文档
			Document document = reader.read(new File(
					"E:/MyeclipseForDacs/aa.xml"));
			// 得到xml的根节点(message)
			Element root = document.getRootElement();
			// 定义子循环体的变量
			Element ticket = null;

			Iterator<?> tickets = null;
			for (tickets = root.element("body").element("ticketNotify")
					.elementIterator(); tickets.hasNext();) {
				ticket = (Element) tickets.next();
				System.out.println(ticket.attributeValue("id"));
				System.out.println(ticket.attributeValue("dealTime"));
				System.out.println(ticket.attributeValue("status"));
				System.out.println(ticket.attributeValue("message"));
			}
			// Element.asXML方法,获得包括该标签的所有XML数据
			// System.out.println(root.element("body").asXML());
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

以上的xml文件我命名是aa.xml读取的地址你们随便写jiukey

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供使用SAX解析器按节点层级读取XML文件的示例代码。 首先,您需要导入SAX解析器和XML解析器: ```python import xml.sax from xml.sax.handler import ContentHandler ``` 然后,您需要定义一个继承自ContentHandler类的处理程序,该处理程序将在解析XML文件时被调用: ```python class NodeHandler(ContentHandler): def __init__(self): self.current_node = "" self.current_level = 0 def startElement(self, name, attrs): self.current_node = name self.current_level += 1 print(" " * (self.current_level - 1) + name) def endElement(self, name): self.current_level -= 1 def characters(self, content): content = content.strip() if content: print(" " * self.current_level + content) ``` 在这个处理程序中,我们定义了三个方法:startElement、endElement和characters。这些方法在解析XML文件时被调用,以处理XML文件中的节点。 在startElement方法中,我们获取当前节点的名称,并将当前节点的层级设置为当前层级加一。然后,我们打印当前节点的名称,并在其前面添加与其层级相对应的空格。 在endElement方法中,我们将当前层级减一。 在characters方法中,我们获取当前节点的内容,并将其打印。我们还将其前面添加与其层级相对应的空格。 最后,您需要创建一个SAX解析器对象,并将处理程序分配给它。然后,您可以使用parse方法解析XML文件: ```python if __name__ == "__main__": parser = xml.sax.make_parser() parser.setContentHandler(NodeHandler()) parser.parse("example.xml") ``` 在这里,我们创建了一个SAX解析器对象,并将NodeHandler处理程序分配给它。然后,我们使用parse方法解析XML文件。 请注意,您需要将示例.xml替换为您要读取的实际XML文件的路径。 希望这可以帮助您按节点层级读取XML文件!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值