可扩展标记语言(eXtensible Markup Language)
一、三个概念
XMl 可扩展标记语言
XSL 展现事务的表现形式
DTD 约束XML文件中是什么
二、简单例子(橡皮泥)
DTD :你叫橡皮泥,可以有颜色、产地的属性
XML :<橡皮泥 颜色=“白色”>
<产地>
东海傲来国
</产地>
</橡皮泥>
XSL: 装饰文件(一样的数据不一样的装饰)
第一种捏法----小猫
第二种捏法----小狗
现在DTD用的较少了,现在使用较多的是Schema
现在的标准主要是W3C制定。
三、WHY XML?
html缺点:标签不可扩展,数据和显示风格没有分离。
四、XML使用最多的是
A、配置文件
B、数据交换(异质信息交换)
C、有利于爬虫等网络技术
五、命名空间
下例中policeman 007name的命名空间采用了缺省的方式,而血刀老祖name采用了以X为开头的命名空间。
“xmlns:X="http://www.police.net/criminal.dtd"”所以两个name区分开了。
<?xml version="1.0" encoding="gb2312" ?>
- <policeman xmlns="http://www.police.net/policeman.dtd"
xmlns:X="http://www.police.net/criminal.dtd">
<name>007</name>
- <X:criminal>
<X:name>血刀老祖</X:name>
</X:criminal>
</policeman>
六、处理指示
<? ?>
七、设计原则
以下属性可以设计成元素
如果属性包含子结构
如果该熟性发生次数是多次的
比较重要、DTD需要限制
八、解析
jdom 、dom4j、sax
下面采用jdom进行解析,因为比较简单。
九、具体示例
1、gobal-configure.xml
<?xml version="1.0" encoding="UTF-8"?>
<sys-configure>
<jdbc-info>
<driver-class-name>com.mysql.jdbc.Driver</driver-class-name>
<url>jdbc:mysql://10.60.40.201:3306/futures3</url>
<user-name>root</user-name>
<password>symbio</password>
<beans>
<bean id="categoryBourse" class="com.symbio.hz.dataload.CategoryBourse"></bean>
<bean id="categoryTradeMonth" class="com.symbio.hz.dataload.CategoryTradeMonth"></bean>
</beans>>
</jdbc-info>
</sys-configure>
2、DBManager
package com.hz.data;
public class CategoryBourse {
}
public class DBManager {
private String dbDriver_;
private String dbUrl_;
private String dbLogin_;
private String dbPassword_;
public String getDbUrl_() {
return dbUrl_;
}
public void setDbUrl_(String dbUrl_) {
this.dbUrl_ = dbUrl_;
}
public String getDbLogin_() {
return dbLogin_;
}
public void setDbLogin_(String dbLogin_) {
this.dbLogin_ = dbLogin_;
}
public String getDbPassword_() {
return dbPassword_;
}
public void setDbPassword_(String dbPassword_) {
this.dbPassword_ = dbPassword_;
}
public void setDbDriver_(String dbDriver_) {
this.dbDriver_ = dbDriver_;
}
}
3、Globleconfigue.java
package hz.data;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.xpath.XPath;
/**
* 读取xml格式的配置文件
*
*/
public class Globleconfigue {
//定义一个需要处理的xml常量。
private static final String CONFIG_FILE_NAME="gobal-configure.xml";
//定义根元素
private Element rootElt;
//数据库连接属性类DBManager
private DBManager dbManager= new DBManager();
public DBManager getDbManager() {
return dbManager;
}
//用来存放下面initBeans();方法中获得的bean
private Map beanMap= new HashMap();
//定义一个单例模式。
private static Globleconfigue instance = new Globleconfigue();
private Globleconfigue(){
//先生成一个SAXBuilder对象,该对象是dom的内部对象。
SAXBuilder sb=new SAXBuilder();
try {
// sb.build(in) SAXBuilder的对象sb根据文件输入流in获得Document对象。
Document doc = sb.build(Thread.currentThread().getContextClassLoader().getResourceAsStream(CONFIG_FILE_NAME));
//通过Document对象可以取到根元素了。
this.rootElt=doc.getRootElement();
//此处如使用rootElt.getChildren();可以一层一层地往下找,但是我们采用一种更快的方式,采用xpath。
//调用initJdbcInfo()方法
initJdbcInfo();
//调用initBeans()方法
initBeans();
} catch (JDOMException e) {
// TODO
e.printStackTrace();
} catch (IOException e) {
// TODO
e.printStackTrace();
}
}
public static Globleconfigue getInstance() {
return instance;
}
/*
* 初始化数据库连接信息
*/
private void initJdbcInfo(){
try {
//返回一个Elenment对象
Element driveClassNameElt = (Element) XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/driver-class-name");
//System.out.println(driveClassNameElt.getText());
//此处就把DbDriver_属性赋值了
dbManager.setDbDriver_(driveClassNameElt.getText());
Element urlElt = (Element) XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/url");
dbManager.setDbUrl_(urlElt.getText());
Element userNameElt = (Element) XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/user-name");
dbManager.setDbLogin_(userNameElt.getText());
Element passwordElt = (Element) XPath.selectSingleNode(rootElt, "//sys-configure/jdbc-info/password");
dbManager.setDbPassword_(passwordElt.getText());//至此完成了对DBManager属性的设值。
System.out.println("dbManager类驱动: "+dbManager.getDbDriver_()+" ====== "+"dbManager类url: "+dbManager.getDbUrl_());
} catch (JDOMException e) {
// TODO
e.printStackTrace();
}
}
/*
* 获取bean配置中的类的对象
*/
private void initBeans(){
try {
//返回一个List对象(List内部的每一个是Element元素),此时运用方法 XPath.selectNodes
List beanList = XPath.selectNodes(rootElt,"//sys-configure/beans/bean");
for(Iterator iter=beanList.iterator(); iter.hasNext();){
Element beanElt=(Element)iter.next();
//此处的id对应xml文件中的ID
String id=beanElt.getAttributeValue("id");
String className=beanElt.getAttributeValue("class");
System.out.println("id="+id);
System.out.println("name="+className);
//以下两步把bean实例化好了,并放在map中。
Object obj=Class.forName(className).newInstance();//用反射机制获得对象
beanMap.put(id, obj);
}
} catch (JDOMException e) {
// TODO
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Object getBean(String c){
return beanMap.get(c);
}
public static void main(String[] args){
Globleconfigue.getInstance();
CategoryBourse categoryBourse=(CategoryBourse)Globleconfigue.getInstance().getBean("categoryBourse");
}
}
4、CategoryBourse.java
一个空实现的类
5、jdom写入
package hz.data;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
/*
* <selects>
* <select>
* <id>1</id>
* <name>浙江</name>
* </select>
* <select>
* <id>2</id>
* <name>辽宁</name>
* </select>
* </selects>
*/
public class XMLWrite {
public static void main(String[] args){
Element rootElt=new Element("selects");
Element selectElt=new Element("select");
Element idElt=new Element("id");
idElt.addContent("1");
Element valueElt=new Element("name");
valueElt.addContent("浙江");
selectElt.addContent(idElt);
selectElt.addContent(valueElt);
rootElt.addContent(selectElt);
//以上是建立父子关系的对象
//以下为输出
Document doc=new Document(rootElt);//此处把rootElt给Document这个类相当于给了他整个文件
XMLOutputter out=new XMLOutputter();//jdom中专门用来输出的,out可以接相应的输出流来输出了
//这句话可以来改变默认编码GBk,改为GB2312
out.setFormat(Format.getCompactFormat().setEncoding("GB2312"));
//此处为了方便演示,先生成字符串
String xmlStr=out.outputString(doc);
//输出到屏幕
System.out.print(xmlStr);
//保存到文件中
try {
out.output(doc, new FileOutputStream("c://test.xml"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
验证以上写如对不对,最简单的方法是用ie浏览器打开生成的xml文件。
分享到:
相关推荐
本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...
使用JDOM,我们可以通过API操作这些节点来实现对XML的解析和操作。 要读取XML文件,首先需要在项目中引入JDOM库。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.jdom ...
Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...
**Java与XML:JDOM解析XML的详细指南** 在Java编程中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,用于存储结构化数据。为了处理XML文档,开发者可以使用多种库,其中之一就是JDOM。JDOM是...
**JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...
在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三部分构成:SAXBuilder用于从XML源构建DOM树,Element代表XML文档的元素,Attribute代表...
本文将深入探讨JDOM解析XML的基本原理、步骤以及示例。 ### JDOM概述 JDOM(Java Document Object Model)是一个完全基于Java的XML API,它的设计目标是提供一种高效、快速、易于使用的API,以便于在Java环境中...
本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML(Extensible Markup Language)的基本概念。XML是一种标记语言,用于存储和传输结构化数据。它的结构清晰...
使用JDOM解析XML文档通常包括以下几个步骤: 1. 创建`SAXBuilder`实例,这是JDOM提供的解析器,可以将XML输入源转换为`Document`对象。 2. 使用`SAXBuilder`的`build`方法读取XML文件,生成`Document`对象。 3. ...
本篇文章将深入探讨如何利用JDOM解析XML文件,并基于XML中的类名生成相应的对象。 首先,我们需要理解JDOM的基本概念。JDOM提供了一组Java对象来表示XML文档,包括Element(元素)、Attribute(属性)、Text(文本...
1. `JDOMUtil.java`:这是一个Java类,包含了使用JDOM解析XML的主要代码。在这个例子中,我们将学习如何读取XML文件,创建一个`SAXBuilder`对象来构建XML文档的DOM(文档对象模型)表示,然后通过`Document`对象来...
基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发...
要使用JDOM解析XML,首先需要将JDOM的jar文件(如jdom.jar)添加到项目的类路径中。此外,由于XML解析通常涉及到其他库,如XPath解析和DTD处理,我们看到压缩包中还包含了一些其他相关的jar文件: 1. xalan.jar:...
在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.jdom <artifactId>...
解析XML的JDOM的jar包,只有引入这个包就可以解析xml了
**JDOM解析XML的基本步骤:** 1. **导入JDOM库**:在Java项目中,需要添加JDOM的jar文件,如`jdom-bundle-1.1.3.jar`。 2. **构建SAXBuilder**:`SAXBuilder`是JDOM用来解析XML文件的类。创建一个`SAXBuilder`实例...
### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...
Java 使用 JDOM 解析 XML 文件 Java 是一种广泛使用的程序设计语言,而 XML 是一种广泛使用的标记语言,用于存储和传输数据。在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和...
用于xml解析,很好用的一个java类库