加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Xml解析

发布时间:2020-12-16 05:58:44 所属栏目:百科 来源:网络整理
导读:1.为什么需要 XML 解析? a)XML 用于应用程序的配置文件。 b)不同语言、不同平台之间数据交换。 2.如何解析 xml ? 有 4 种技术,可以用于解析 xml : DOM 、 JDOM 、 dom4j 、 Sax Dom ——原生态标准模型。 Jdom —— Java 定制模型。(专门针对 Java 语言


1.为什么需要XML解析?

a)XML用于应用程序的配置文件。

b)不同语言、不同平台之间数据交换。

2.如何解析xml

4种技术,可以用于解析xml

DOMJDOMdom4jSax

Dom——原生态标准模型。

Jdom——Java定制模型。(专门针对Java语言)

Dom4j——优化Jdom之后的版本。(性能非常高)

(树形)

Sax——适合于大型xml文件;编码难度高。(事件模型)

总结:大型xml只能使用sax;其他使用jdom或者dom4j

树形特点:一次性加载全部的XML文件数据。(适合于小型XML文件)

事件模型:按需加载指定部分数据。(适合于大型XML文件)

3.如何使用Jdom解析xml

注:XML解析最核心的一个类:Document(文档,表示一个XML文件)

xml文件标准格式:

1.文件的后缀名必须是.xml文件。

2.必须有一个头文件。

<?xmlversion="1.0"encoding="UTF-8"?>

3.必须且只能有一个根节点。

问题:如何利用Java程序读取XML文件中的数据?

答案:解析xml

JDOM解析步骤:

1.创建解析器对象SaxBuilder

2.获取Document文档对象。

3.获取根节点。

4.获取根节点一下的子节点及值。

JDOMXML文件:

1.创建根节点。

2.创建子节点,并将子节点添加到根节点。

3.创建一个document文档对象。

4.输出文档对象到一个文件中。(注意格式)

代码实例:

保存数据

public class WriterXML {


public static void main(String[] args) {

//创建文档对象
Document doc = DocumentHelper.createDocument();

//调用查询方法,获取查询的数据
List<UserInfo> list = new UserInfoDAO().queryAll();

Element root = doc.addElement("userinfos");

for(UserInfo u : list){

Element user = root.addElement("user");
user.addAttribute("uid",u.getUid()+"");

user.addElement("uname").setText(u.getUname());
user.addElement("upwd").setText(u.getUpwd());
}

OutputFormat fmt = new OutputFormat();
fmt.setIndentSize(4);
fmt.setNewlines(true);

try {

XMLWriter out = new XMLWriter(new FileOutputStream(new File("c:/test.xml")),fmt);

out.write(doc);

} catch (Exception e) {
e.printStackTrace();
}

System.out.println("创建成功");
}

}

读取 数据:

public class ReaderXML { public static void main(String[] args) { //1. 创建解析器 SAXReader reader = new SAXReader(); try { //2. 读取文档 Document dom = reader.read(new File("e:/testwriter.xml")); Element root = dom.getRootElement(); List<Element> list = root.elements(); for(Element e : list){ System.out.print(e.attribute("uid").getValue()); System.out.print(e.elementText("uname")+"t"); System.out.print(e.elementText("upwd")+"n"); } } catch (Exception e) { e.printStackTrace(); } } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读