七,XML解析

 

XML 被设计用来传输和存储数据。
HTML 被设计用来显示数据。
XML 指可扩展标记语言(EXtensible Markup Language)
XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。
这让创建不同应用程序可以共享的数据变得更加容易。
通过 XML,可以在不兼容的系统之间轻松地交换数据。
&lt;	<	小于
&gt;	>	大于
&amp;	&	和号
&apos;	'	单引号
&quot;	"	引号
元素:根元素,正确嵌套,开始关闭
属性......
属性无法包含多重的值(元素可以)
属性无法描述树结构(元素可以)
属性不易扩展(为未来的变化)
属性难以阅读和维护
拥有正确语法的 XML 被称为“形式良好”的 XML。
通过 DTD 验证的 XML 是“合法”的 XML。
W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema

xpath:
在xml中查找信息的语言,导航,节点,节点集合,文本等等
由于我们单纯使用dom定位节点时,大部分时间需要一层一
层的处理,如果有了xPath,我们定位我们的节点将变得很
轻松。他可以根据路径,属性,甚至是条件进行节点的检索。

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
  <book>
    	<title lang="eng">Harry Potter</title>
   		<price>29.99</price>
  	  </book>
  <book>
    	<title lang="eng">Learning XML</title>
    	<price>39.95</price>
  	  </book>
</bookstore>


<?xml version="1.0" encoding="UTF-8"?><!-- 版本,编码 -->
<!-- 元素,属性 -->
<!-- 实体引用:&lt<,&gt>,&quot",&apos',&amp& -->
<!-- xml文件解析的两种方式sax和dom/sax边读边解析,可以在任意时刻停止,不能修改节点/而dom是w3c的标准,
读取所有元素,解析成节点,可以遍历和修改节点 -->
<root>
<![CDATA[<hello>]]>
	<class>
		<name id="one">fanchuanqi.FX</name>
	</class>
</root>
java中采取了两种读取和操作xml的方法
1,DOM 
2,SAX
SAX一边扫描一边解析,速度快,不能对节点修改
DOM将文档全部读取解析成为节点树,可以方便遍历和修改节点
DOM4J的maven包导入	

public static void main(String[] args) throws Exception {
		String str = null;
		//导包dom4j
		//SAXReader
		SAXReader sr=new SAXReader();
		Document d1=sr.read("./src/main/java/fanchuanqi/test.xml");
		//所有的更改和查询都是基于Document对象
		Element root=d1.getRootElement();
		Element cl=root.element("class");
		List<Element> na=cl.elements();
		for(Element one:na) {
			System.out.println(one.getText()+" "+one.getName());
			System.out.println(one.attributeValue("id"));
			str=one.getText();
		}
		//XMLwriter
		Document d2=DocumentHelper.createDocument();
		Element root1=d2.addElement("list");
		Element name=root1.addElement("name");
		name.addAttribute("id", "two");
		name.addText("OK");
		XMLWriter xw=new XMLWriter(newFileOutputStream("./src/main/java/fanchuanqi/test2.xml"));
		xw.write(d2);

		导包jaxen
		//selectNodes&&selectSingleNode
		String xpath="/class";
		List<Node> nodes=d1.selectNodes(xpath);
		Node nodeSin=d1.selectSingleNode("/");
		System.out.println(nodeSin);
		System.out.println("aa");
		for(Node node:nodes) {
			System.out.println(node+"aa");
		}

	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值