jdk支持java 和xml 打交道,并且方式相当多。下面从两个角度说下java 和 xml的交互形式。
1、xml的解析。
xml的解析大抵有两种方式:
DOM 和 SAX 以及StAX。
DOM:就是基于w3c的DOM模型,在内存中读入一棵xml 的dom模型树结构。
相关api在:org.w3c.dom 包里。
SAX:基于事件解析的xml处理方式,每次遇到xml元素的时候,进行方法回调。
相关的api在:org.xml.sax 包里。
StAX:基于事件的xml解析方式,但是非回调。
相关api在:javax.xml.stream包里。
另外:StAX其实和SAX的处理的方式是一致的,都是基于事件,
只是SAX 是push 推的方式,由parse 调用 application的方式,而 StAX 则是相反由application调用parse,这种方式比较好理解,更符合我们程序的调用习惯。
JAXP: 意为Java API for XML Processing。因为 dom 和 sax 有多种实现方式,所以sun又提供了dom 和 sax的 工厂方法,一般建议使用JAXP的工厂方法的形式。
相关api在:javax.xml.parsers 包里。
api有:
/** dom: jaxp通过下面两个工厂类,创建org.w3c.dom.Document 对象完成对xml的解析和处理。
*/
javax.xml.parsers.DocumentBuilder;
javax.xml.parsers.DocumentBuilderFactory;
org.w3c.dom.Document ;
/** sax:jaxp通过下面两个工厂类 创建 org.xml.sax.helpers.DefaultHandler进行回调解析完成xml的解析。
*/
javax.xml.parsers.SAXParser;
javax.xml.parsers.SAXParserFactory;
org.xml.sax.helpers.DefaultHandler;
DOM举例:
public static void main(String[] args) throws Exception {
// Document doc =
// DocumentBuilderFactoryImpl.newInstance().newDocumentBuilder().newDocument();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder
.parse("D:\\qunarProject\\tts_tuan\\src\\test\\java\\com\\qunar\\test\\1.xml");
NodeList nodeList = doc.getElementsByTagName("data");
for (int i = 0; i < nodeList.getLength(); i++) {
Element ele = (Element)nodeList.item(i);
NodeList list = ele.getChildNodes();
for(int j =0;j<list.getLength();j++){
Node node = list.item(j);
System.out.println("-:" + node.getNodeName());
System.out.println("--:" + node.getTextContent());
}
}
}
SAX举例:
public static void main(String[] args) throws Exception {
SAXParser parse = SAXParserFactory.newInstance().newSAXParser();
File f = new File(
"D:\\qunarProject\\tts_tuan\\src\\test\\java\\com\\qunar\\test\\1.xml");
parse.parse(f, new DefaultHandler() {
@Override
public void startDocument() throws SAXException {
System.out.println("startDocument");
}
@Override
public void endDocument() throws SAXException {
System.out.println("endDocument");
};
@Override
public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException {
System.out.println(localName);
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println(localName);
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.println(new String(ch, start, length));
}
});
}
StAX举例:
<?xml version="1.0" encoding="UTF-8"?>
<data>
aaa<name>admin</name>bbb
ccc<password>123456</password>ddd
</data>
public static void main(String[] args) throws Exception {
InputStream in = new FileInputStream(
"D:\\qunarProject\\tts_tuan\\src\\test\\java\\com\\qunar\\test\\1.xml");
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader parser = factory.createXMLStreamReader(in);
while (true) {
int event = parser.next();
if (event == XMLStreamConstants.END_DOCUMENT) {
parser.close();
break;
} else if (event == XMLStreamConstants.START_ELEMENT) {
System.out.println(parser.getLocalName());
} else if (event == XMLStreamConstants.CHARACTERS) {
System.out.println(parser.getText());
}else if (event == XMLStreamConstants.END_ELEMENT) {
System.out.println(parser.getLocalName());
}
}
}
2、xml的数据绑定。
是从java对象POJO和xml数据之间的转换的思路。 从面向对象的角度来处理javabean 和xml 数据的对象关系,在系统中经常使用。
java提供的工业标准是:JAXB。
举例:
@XmlRootElement(name = "user")
@XmlAccessorType(XmlAccessType.FIELD)
class User{
@XmlElement(name = "uname")
private String username;
@XmlElement(name = "pword")
private String password;
public User(String u,String p){
this.username = u;
this.password = p;
}
public User(){}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
@XmlRootElement(name = "team")
@XmlAccessorType(XmlAccessType.FIELD)
class Team{
@XmlElementWrapper(name = "userList")
@XmlElement(name = "user")
private List<User> userList;
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
public class JaxbTest {
public static void main(String[] args) throws Exception {
List<User> userList = new ArrayList<User>();
for(int i=0;i<2;i++){
userList.add(new User("name"+i,"pword"+i));
}
Team team = new Team();
team.setUserList(userList);
JAXBContext context = JAXBContext.newInstance(User.class,Team.class);
Marshaller marshaller= context.createMarshaller();
marshaller.marshal(team, System.out);
}
}
输出:
<?xml version="1.0" encoding="utf-8"?>
<team>
<userList>
<user>
<uname>name0</uname>
<pword>pword0</pword>
</user>
<user>
<uname>name1</uname>
<pword>pword1</pword>
</user>
</userList>
</team>
分享到:
相关推荐
此外,"javaxml.r_xml"和"javaxml.r"标签可能指的是Java的JAXB框架,这是一个用于XML绑定的Java标准,可以自动将Java对象映射为XML文档,反之亦然。这大大简化了处理XML数据的过程,尤其是在构建Web服务或需要与XML...
Java编程语言与XML(eXtensible Markup Language)的结合是软件开发中的重要部分,尤其在数据交换、配置存储和文档处理等领域。本资源“java-xml.zip”包含了一组关于Java处理XML的源代码示例,对于学习和理解如何在...
### Java XML 解析知识点 #### 一、Java XML 解析简介 在计算机科学领域,XML (Extensible Markup Language) 是一种被广泛使用的标记语言,它主要用于数据存储与传输。Java 提供了多种方法来解析 XML 文件,这在...
本压缩包文件“Java-XML-programming-examples.rar”显然提供了关于Java与XML结合使用的实际编程示例,有助于深入理解这一技术。 在Java中,处理XML主要涉及以下几个核心知识点: 1. **DOM解析**:DOM(文档对象...
Java XML技术是软件开发中一个重要的领域,尤其是在处理数据交换和序列化时。XML(Extensible Markup Language)因其结构清晰、可读性强的特点,被广泛应用于配置文件、数据传输和存储等方面。Java作为一种多用途的...
在Java开发中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它具有良好的结构化和可读性,广泛应用于配置文件、数据传输、序列化等方面。本主题聚焦于Java与XML之间的相互转化,特别是如何利用XML...
intellij-java-google-style.xml 提供给intellij-idea的代码格式化模板,代码更加整洁,提升团队合作效率
API文档java-xml-tool 这个Java项目说明了Java提供的XML API的用法: 解析和验证XML文档, 执行XSL转换 使用来自XML源的JPA填充数据库。 要求 JDK 1.8 Java项目管理工具maven ,(我使用版本3.5.2): 软件版本控制...
可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML是标准通用标记语言 ...
Java XML驱动包主要包含了处理XML文档的一系列库,这些库在开发中经常用于解析、创建、操作和转换XML数据。本压缩包中的四个文件——dom4j-1.6.1.jar、jaxen-1.1-beta-7.jar、jdom-1.1.jar和sax-2.0.1.jar,都是Java...
Java-XML-GuiBuilder是一个开源项目,专门设计用于利用XML文档来构建可执行的Java Swing界面。这个工具的出现主要是为了提升开发效率,特别是在进行快速原型制作、用户界面的规格设定与文档化方面。Swing是Java的一...
例子中首先创建了一个...接着,我们使用parse方法解析了一个名为example.xml的XML文件。之后,我们通过获取根元素并遍历其子元素来读取XML文件内容。请根据实际的XML结构和需求调整"List"以及其他代码
基于java的开发源码-XML写的RSS阅读器.zip 基于java的开发源码-XML写的RSS阅读器.zip 基于java的开发源码-XML写的RSS阅读器.zip 基于java的开发源码-XML写的RSS阅读器.zip 基于java的开发源码-XML写的RSS阅读器.zip ...
通过注解,开发者可以轻松地将Java对象与XML结构进行绑定,使得XML数据的读取和写入变得非常直观。 ### 2. 安装Simple-XML 在项目中使用Simple-XML,首先需要将其作为依赖添加到构建工具中。如果你使用的是Maven,...
《深入解析jcommon-xml-1.0.13.jar:Java XML处理的基石》 在Java编程领域,XML(eXtensible Markup Language)作为一种数据交换格式,被广泛应用于各种系统之间的通信和数据存储。为了更好地处理XML文档,开发者...
5. **文档和示例**:下载的Simple-XML-2.7.1压缩包包含了所需的jar文件,供开发者直接引入项目使用。同时,附带的doc文件提供了详细API文档,帮助开发者快速理解和掌握库的使用方法。还有demo示例代码,展示如何实现...
在"Java-XML-master"这个压缩包中,可能包含了Java XML处理的各种示例代码,涵盖DOM、SAX、StAX以及Eclipse IDE的使用方法。这些示例可以帮助初学者快速掌握Java与XML的交互,了解如何在实际项目中应用这些技术。...
simple-xml-2.6.2.jar主要用于模拟报文的类库,有需要的可以下载
【标题】"javax-xml-soap-1.6.0.jar" 是一个Java库,它包含了Java XML(JSR 109)的SOAP(Simple Object Access Protocol)API的实现。这个版本是1.6.0,用于处理XML SOAP消息。 【描述】"javax-xml-soap-1.6.0.jar...
castor-0.9.5.3-xml.jar,java和xml互相转换所使用的JAR