`
xinklabi
  • 浏览: 1591633 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

java生成XML(二)

 
阅读更多

1.这是我们所要用的xml文件,里面存着了用户member的所有资料。。
当然还通过members.dtd来规范member的格式

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE members SYSTEM "members.dtd">
<members><member gender="male"><username>saoo</username><password>saoo</password><realname>Huang Jinxiang</realname><birth>17/8/1982</birth><contact>94811430</contact><email>huang_jinxiang@yahoo.com</email><address>Lonpang Rd BLK 178 #17-28</address><zipcode>670178</zipcode></member></members>

2.建议一个相对应的Member的JavaBean:

/*
* Created on 2004-7-10
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/

/**
* @author Huang Jinxiang
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class Member {
private String username;
private String password;
private String realname;
private String birth;
private String contact;
private String email;
private String address;
private String gender;
private String zipcode;

public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getZipcode() {
return zipcode;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
}
因为xml中存的都是以String的格式,所以我把全部的Member的属性都用String来表示,之后,用户可以通过Integer.parseInt()之类的helper来改变其类型。。

3. 用Dom进行解析:

/*
* Created on 2004-7-10
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

/**
* @author Huang Jinxiang
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class MemberImp {

//这一个方法是对Member的资料进行编辑,然后保存
//先是找到相对应的Member的资料,提取出来放到相对应的Member Bean中
//,然后从xml文件里删除这一个用户的资料,
//接着改变提取出来MemberBean的属性值
//最后写入到members.xml中
//其中String str是指的members.xml的对就的路径(既members.xml的位置)
public void updateMember(Member member, String str) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

Document document = builder.parse(str);
Element root = document.getDocumentElement();

int i;
for(i =0; i < root.getChildNodes().getLength(); i++) {
Node curNode = root.getChildNodes().item(i);
if(curNode.getFirstChild().getFirstChild().getNodeValue().equals(member.getUsername()))
{
root.removeChild(curNode);
TransformerFactory tFactory =
TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();

DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(str);
String systemValue = (new
File(document.getDoctype().getSystemId())).getName();
transformer.setOutputProperty(
OutputKeys.DOCTYPE_SYSTEM, systemValue
);
transformer.transform(source, result);
writeMember(member, str);
}
}
}
catch(Exception e) {
e.printStackTrace();
}
}

//这个方法是用来取得相对就username的全部member的资料
public Member getMember(String username, String str) {
Member member = new Member();
Document document;
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();

document = builder.parse(str);
Element root = document.getDocumentElement();

int i;
for(i =0; i < root.getChildNodes().getLength(); i++) {
Node curNode = root.getChildNodes().item(i);

if(curNode.getFirstChild().getFirstChild().getNodeValue().equals(username)) {
member.setGender(curNode.getAttributes().item(0).getFirstChild().getNodeValue());
member.setUsername(curNode.getChildNodes().item(0).getFirstChild().getNodeValue());
member.setPassword(curNode.getChildNodes().item(1).getFirstChild().getNodeValue());
member.setRealname(curNode.getChildNodes().item(2).getFirstChild().getNodeValue());
member.setBirth(curNode.getChildNodes().item(3).getFirstChild().getNodeValue());
member.setContact(curNode.getChildNodes().item(4).getFirstChild().getNodeValue());
member.setEmail(curNode.getChildNodes().item(5).getFirstChild().getNodeValue());
member.setAddress(curNode.getChildNodes().item(6).getFirstChild().getNodeValue());
member.setZipcode(curNode.getChildNodes().item(7).getFirstChild().getNodeValue());
}
}
}
catch (Exception e) { e.printStackTrace();}
return member;
}

//这是将新生成的Member Bean写到members.xml中
//还要注意不要忘记DTD所XML中的SystemId
public void writeMember(Member member, String str) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(str);
Element mem = document.createElement("member");
mem.setAttribute("gender", member.getGender());

Element username = document.createElement("username");
username.appendChild(document.createTextNode(member.getUsername()));
mem.appendChild(username);

Element password = document.createElement("password");
password.appendChild(document.createTextNode(member.getPassword()));
mem.appendChild(password);

Element realname = document.createElement("realname");
realname.appendChild(document.createTextNode(member.getRealname()));
mem.appendChild(realname);

Element birth = document.createElement("birth");
birth.appendChild(document.createTextNode(member.getBirth()));
mem.appendChild(birth);

Element con = document.createElement("contact");
con.appendChild(document.createTextNode(member.getContact()));
mem.appendChild(con);

Element email = document.createElement("email");
email.appendChild(document.createTextNode(member.getEmail()));
mem.appendChild(email);

Element add = document.createElement("address");
add.appendChild(document.createTextNode(member.getAddress()));
mem.appendChild(add);

Element zipcode = document.createElement("zipcode");
zipcode.appendChild(document.createTextNode(member.getZipcode()));
mem.appendChild(zipcode);

Element root = document.getDocumentElement();
root.appendChild(mem);

TransformerFactory tFactory =
TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();

DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(str);
String systemValue = (new
File(document.getDoctype().getSystemId())).getName();
transformer.setOutputProperty(
OutputKeys.DOCTYPE_SYSTEM, systemValue
);
transformer.transform(source, result);
} catch (Exception e) {
e.printStackTrace();
}
}
}

分享到:
评论

相关推荐

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    java 通过模板生成 xml,发送报文

    首先,让我们理解Java生成XML的基本步骤: 1. **创建XML文档对象**:在Java中,我们可以使用`DocumentBuilderFactory`和`DocumentBuilder`类来创建一个`Document`对象,这个对象代表整个XML文档。 ```java ...

    java生成xml文件的时候如何控制xml的缩进格式.pdf

    java生成xml文件的时候如何控制xml的缩进格式.pdf

    java生成xml文件

    用java生成xml文档.DocumentBuilderFactory DocumentBuilder Document doc;至此可以用doc来操作xml文档了

    java中生成xml文件,并上传至ftp服务器

    JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。

    通过JAVA生成XML

    本篇主要介绍如何通过Java编程语言生成XML文档,结合“XML项目开发中用到的”这一标签,我们将深入探讨Java API中的DOM、SAX和StAX三种解析器,以及它们在创建XML文件时的应用。 1. DOM(Document Object Model)...

    JAVA 生成 XML文件

    在Java编程环境中,生成XML(eXtensible Markup Language)文件是一种常见的任务,尤其是在需要将数据持久化或者与外部系统交换信息时。XML文件结构清晰,易于读写,并且具有良好的跨平台支持。本篇文章将深入探讨...

    java生成xsd,xml示例

    在Java开发中,XML(可扩展...总结起来,Java生成XML和XSD涉及到XML和XSD的基本概念,以及使用JAXB等Java库进行XML操作的技术。在实际项目中,理解并熟练运用这些知识对于处理结构化数据的序列化和反序列化至关重要。

    java文件生成xml文档

    在Java编程中,生成XML文档是一项常见的任务,特别是在构建配置文件、数据交换或者保存结构化信息时。XML(eXtensible Markup Language)是一种标记语言,它的结构清晰、可读性强,非常适合用来存储和传输数据。...

    JAVA生成XML文件.doc

    ### JAVA生成XML文件知识点 #### 一、简介 在Java编程中,生成XML文件是一种常见的需求,尤其是在数据交换、配置管理或系统间通信时。本文档通过一个具体的示例介绍了如何使用Java语言来生成XML文件,并对代码进行...

    java 生成xml

    java 生成xml,需要jar包需要自己下。

    freemarker生成xml示例

    1. **数据模型(Model)**:这是你要生成XML所依赖的数据,可以是Java对象、Map或者其他集合类型。例如,你可以创建一个包含多个元素的列表,每个元素都有属性如`name`、`age`等。 ```java List&lt;Person&gt; persons = ...

    java_动态生成XML文件

    在Java编程中,生成XML文件是一项常见的任务,特别是在数据存储、配置管理或数据交换的应用场景。XML(eXtensible Markup Language)是一种结构化数据格式,具有良好的可读性和易于解析的特点。本教程将深入讲解如何...

    Java DOM 生成XML

    标签"解析XML和生成XML的必备选择"表明,DOM不仅适用于生成XML,也常用于解析XML文档。解析XML时,`DocumentBuilder`会构建一个DOM树,然后可以通过DOM API查询和修改树中的节点。 总结一下,Java DOM提供了一套...

    java 生成XML串

    &lt;?xml version="1.0" encoding="GBK" standalone="no"?&gt; &lt;aaaaaa&gt;bbbbbb 张三" id="110"&gt; &lt;sub2&gt;fdsdfsdfs &lt;dddddd&gt;333333333 &lt;/B2CReq&gt;

    java 生成xml文件

    在Java编程中,生成XML(eXtensible Markup Language)文件是一项常见的任务,尤其是在数据交换、配置存储或报告生成等领域。XML是一种结构化数据格式,它以易于人类阅读和机器解析的方式存储信息。本篇文章将深入...

    实体类生成XML格式字符串

    要根据实体类生成XML,我们可以利用Java的API,如JAXB(Java Architecture for XML Binding)或DOM(Document Object Model)。JAXB是Java SE的一部分,用于将Java对象绑定到XML,使得对象可以被序列化为XML,反之...

    Java生成xml(jdom)

    Java生成XML是Java编程中常见的任务,特别是在处理数据序列化或与外部系统交换结构化信息时。本教程将深入探讨如何使用JDOM库在Java中生成XML文档,并且重点介绍如何处理中文字符。 JDOM(Java Document Object ...

    Java2XML生成XML

    Java2XML生成XML

    Java解析和生成XML.pdf

    Java解析和生成XML的知识点主要涵盖了使用JAXB(Java Architecture for XML Binding)框架来实现Java对象与XML(可扩展标记语言)之间的数据转换。JAXB提供了一种便捷的方式,通过注解(Annotation)来实现这一过程...

Global site tag (gtag.js) - Google Analytics