encoding : 解析xml中的文字的时候,使用什" />
ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Java读写Xml(2/4)

来源:网络整理     时间:2018-10-04     关键词:

本篇文章主要介绍了" Java读写Xml",主要涉及到方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: XmleXtendsible markup language 可扩展的标记语言XML 有什么用?可以用来保存数据可以用来做配置文件数据传输载体定义xml其实就是...

 
如: 

    

xml的注释,不允许放置在文档的第一行。 必须在文档声明的下面。

CDATA区

  • 非法字符

    严格地讲,在 XML 中仅有字符 “<”和”&” 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

    < <
    & &

如果某段字符串里面有过多的字符, 并且里面包含了类似标签或者关键字的这种文字,不想让xml的解析器去解析。 那么可以使用CDATA来 Java读写Xml包装。 不过这个CDATA 一般比较少看到。 通常在服务器给客户端返回数据的时候。

我爱黑马训练营]]>

XML 解析

其实就是获取元素里面的字符数据或者属性数据。

XML解析方式(面试常问)

有很多种,但是常用的有两种。

  • DOM

  • SAX

针对这两种解析方式的API

一些组织或者公司, 针对以上两种解析方式, 给出的解决方案有哪些?

    jaxp  sun公司。 比较繁琐

    jdom
    dom4j  使用比较广泛

Dom4j 基本读写用法

  1. 创建SaxReader对象

  2. 指定解析的xml

  3. 获取根元素。

  4. 根据根元素获取子元素或者下面的子孙元素

public class XmlParser
{
	public static void main(String[] args)
	{
		try
		{
			// DOM4J读xml
			SAXReader reader = new SAXReader();
			Document document = reader.read(new File("src/students.xml"));
			// 1.获取根节点
			Element element = document.getRootElement();
			// 2.获取根节点下的指定的元素
			Element userElement = element.element("user");
			// 3.获取当前元素的属性
			String str = userElement.attributeValue("id");
			// 4.获取当前元素的所有属性
			List userAttrList = userElement.attributes();
			// 5.获取当前下所有的子元素
			List elementList = element.elements();
			// 6.获取当前元素下子元素的值
			String emailStr = userElement.element("email").getText();

			// 7.删除某属性
			Attribute attribute = element.attribute("size");// 属性名name
			//document.remove(attribute);

			// 8.添加节点的属性和文字.
			element.addAttribute("name", "sitinspring");

			System.out.println(emailStr);

			// 将文档写入XML文件.
			// 1.文档中全为英文,不设置编码,直接写入的形式.
			XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
			writer.write(document);
			writer.close();
			// 2.文档中含有中文,设置编码格式写入的形式
			OutputFormat format = OutputFormat.createPrettyPrint();
			format.setEncoding("GBK");//指定XML编码
			writer = new XMLWriter(new FileWriter("output.xml"), format);
			writer.write(document);
			writer.close();
			// XPath方式读取指定的节点
		} catch (DocumentException e)
		{
			e.printStackTrace();
		} catch (IOException e)
		{
			e.printStackTrace();
		}

	}
}

SaxReader 创建好对象 。

Document
Element

  1. 看文档

  2. 记住关键字 。

  3. 有对象先点一下。

  4. 看一下方法的返回值。

  5. 根据平时的积累。 getXXX setXXX

Dom4j 的 Xpath使用

dom4j里面支持Xpath的写法。 xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位到具体的某一个元素。

  1. 添加jar包依赖

    jaxen-1.1-beta-6.jar

  2. 在查找指定节点的时候,根据XPath语法规则来查找

  3. 后续的代码与以前的解析代码一样。

        //要想使用Xpath, 还得添加支持的jar 获取的是第一个 只返回一个。 
        Element nameElement = (Element) rootElement.selectSingleNode("//name");
        System.out.println(nameElement.getText());

        System.out.println("----------------");

        //获取文档里面的所有name元素 
        List list = rootElement.selectNodes("//name");
        for (Element element : list) {
            System.out.println(element.getText());
        }

XML 约束【了解】

如下的文档, 属性的ID值是一样的。 这在生活中是不可能出现的。 并且第二个学生的姓名有好几个。 一般也很少。那么怎么规定ID的值唯一, 或者是元素只能出现一次,不能出现多次? 甚至是规定里面只能出现具体的元素名字。

相关图片

相关文章