标题:[求助]如何用JDom创建xml格式的文本
只看楼主
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
 问题点数:0 回复次数:12 
[求助]如何用JDom创建xml格式的文本

请问下面这段xml如何用JDom创建?
谢谢!
<?xml version=\"1.0\" encoding=\"gb2312\"?>
<user>
<student>
<id>1</id>
<name>aa</name>
<score>100</score>
</student>
<student>
<id>2</id>
<name>bb</name>
<score>90</score>
</student>
</user>

------------------------------------

我现在不明白的就是有二个相同的student元素,
那是不是要用Element创建二个名为student的实例呢?

------------------------------------



搜索更多相关主题的帖子: xml JDom student 文本 score 
2006-12-22 16:26
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

建议你看看JAVA里面XML的API

用它很容易实现的


可惜不是你,陪我到最后
2006-12-22 16:27
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
得分:0 
我看了,也试了办天了。。真没试出来才问的

如果不是有二个student我就会创建

但是有二个student的话,我要用Element实例二个student不成的。。。

能把我不明白的关键地方给我点儿提示吗?

我在说's blog   http://www..cn
2006-12-22 16:35
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 

[CODE]/*
* UserServiceImpl.java
*
* Created on 2006.11.14
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package net.vlinux.book.orm;
import net.vlinux.book.service.*;
import net.vlinux.book.pojo.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
import java.util.*;
import java.text.*;
import java.io.*;
/**
*
* @author lbf
*/
public class UserServiceImpl implements UserService {

private File file;
private DocumentBuilder builder;
private Transformer transformer;
public UserServiceImpl(){
initOther();
}
private void initOther(){
try{
file=new File("user.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
builder=factory.newDocumentBuilder();
TransformerFactory tFactory =TransformerFactory.newInstance();
transformer = tFactory.newTransformer();
} catch(Exception exe){
exe.printStackTrace();
}
}
private Document getDocument(){
Document doc=null;
try{
if(file.exists()){
doc=builder.parse(file);
}else{
doc=builder.newDocument();
}
} catch(Exception exe){
exe.printStackTrace();
}
return doc;
}
private void saveDocment(Document doc){
try{
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
} catch(Exception exe){
exe.printStackTrace();
}
}
private Vector<User> getAllUsers(){
Vector<User> users=new Vector<User>();
Document doc=this.getDocument();
Element root=doc.getDocumentElement();
if(root!=null){
NodeList list=root.getElementsByTagName("user");
for(int i=0;i<list.getLength();i++){
Element node=(Element)list.item(i);
User u=new User();
u.setId(Long.parseLong(node.getAttribute("id")));
Element name=(Element)(node.getElementsByTagName("name").item(0));
Text nameText=(Text)(name.getFirstChild());
u.setUsername(nameText.getNodeValue());
Element pwd=(Element)(node.getElementsByTagName("pwd").item(0));
Text pwdText=(Text)(pwd.getFirstChild());
u.setPassword(pwdText.getNodeValue());
Element email=(Element)(node.getElementsByTagName("email").item(0));
Text emailText=(Text)(email.getFirstChild());
u.setEmail(emailText.getNodeValue());
users.add(u);
}
}
return users;
}
public boolean removeUser(User user){
Document doc=this.getDocument();
Element root=doc.getDocumentElement();
if(root!=null){
NodeList list=root.getElementsByTagName("user");
for(int i=0;i<list.getLength();i++){
Element node=(Element)list.item(i);
long id=Long.parseLong(node.getAttribute("id"));
if(user.getId()==id){
root.removeChild(node);
this.saveDocment(doc);
return true;
}
}
}
return false;
}
public void save(User user) {
Document doc=this.getDocument();
Element ele=doc.getDocumentElement();
if(ele==null){
ele=doc.createElement("users");
doc.appendChild(ele);
}
Element u=doc.createElement("user");
u.setAttribute("id",""+user.getId());
Element name=doc.createElement("name");
Element pwd=doc.createElement("pwd");
Element email=doc.createElement("email");
Text nameText=doc.createTextNode(user.getUsername());
Text pwdText=doc.createTextNode(user.getPassword());
Text emailText=doc.createTextNode(user.getEmail());
name.appendChild(nameText);
pwd.appendChild(pwdText);
email.appendChild(emailText);
u.appendChild(name);
u.appendChild(pwd);
u.appendChild(email);
ele.appendChild(u);
this.saveDocment(doc);
}
public User login(String username, String password) {
Vector<User> users=this.getAllUsers();
for(User u:users){
if(u.getUsername().equals(username)&&u.getPassword().equals(password)){
return u;
}
}
return null;
}

public User changePWD(String username, String password) {
Document doc=this.getDocument();
Element root=doc.getDocumentElement();
if(root!=null){
NodeList list=root.getElementsByTagName("user");
for(int i=0;i<list.getLength();i++){
Element node=(Element)list.item(i);
User u=new User();
u.setId(Long.parseLong(node.getAttribute("id")));
Element name=(Element)(node.getElementsByTagName("name").item(0));
Text nameText=(Text)(name.getFirstChild());
u.setUsername(nameText.getNodeValue());
Element pwd=(Element)(node.getElementsByTagName("pwd").item(0));
Text pwdText=(Text)(pwd.getFirstChild());
u.setPassword(pwdText.getNodeValue());
Element email=(Element)(node.getElementsByTagName("email").item(0));
Text emailText=(Text)(email.getFirstChild());
u.setEmail(emailText.getNodeValue());
if(u.getUsername().equals(username)){
Element pwdNew=doc.createElement("pwd");
Text pwdNewText=doc.createTextNode(password);
pwdNew.appendChild(pwdNewText);
node.replaceChild(pwdNew,pwd);
this.saveDocment(doc);
u.setPassword(password);
return u;
}
}
}
return null;
}

public static void main(String[] args) {
UserServiceImpl us=new UserServiceImpl();

}

}[/CODE]

这是我以前写的一个东西,你可以参考一下


可惜不是你,陪我到最后
2006-12-22 16:43
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
得分:0 
谢谢,不过怎么这么多呀?

你会用JDom吗?
用JDom超简单的几行就OK了。。



我在说's blog   http://www..cn
2006-12-22 16:44
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
得分:0 
如果有一个你会写么?
两个和一个没区别啊

老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-22 16:49
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
得分:0 

有区别。因为不能建重名的Element,


我在说's blog   http://www..cn
2006-12-22 16:50
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
怎么会不能建同名的呢
Document doc=this.getDocument();//先得到顶层的文档
Element ele=doc.getDocumentElement();
if(ele==null){
ele=doc.createElement("users");
doc.appendChild(ele);
}
Element u=doc.createElement("user");
u.setAttribute("id",""+user.getId());
Element name=doc.createElement("name");
Element pwd=doc.createElement("pwd");
Element email=doc.createElement("email");
Text nameText=doc.createTextNode(user.getUsername());
Text pwdText=doc.createTextNode(user.getPassword());
Text emailText=doc.createTextNode(user.getEmail());
name.appendChild(nameText);
pwd.appendChild(pwdText);
email.appendChild(emailText);
u.appendChild(name);
u.appendChild(pwd);
u.appendChild(email);
ele.appendChild(u);//用这种方法啊,当然可以了

可惜不是你,陪我到最后
2006-12-22 16:54
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
以下是引用limaoyuan在2006-12-22 16:50:12的发言:

有区别。因为不能建重名的Element,

JDOM我不了解,但是用JAVA的API是可以写出来的

其实JAVA的API也不复杂,只要几句就可以了.并且条理很清楚


可惜不是你,陪我到最后
2006-12-22 16:55
angeloc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:36
帖 子:1353
专家分:0
注 册:2006-11-21
得分:0 

Element student = doc.createElement("student");
Element id = doc.createElement("id");
student.appendChild(id);
Text tId = doc.createTextNode("...");
id.appendChild(tId);

Element name= doc.createElement("name");
student.appendChild(name);
Text tName= doc.createTextNode("...");
name.appendChild(tName);

Element score = doc.createElement("score");
student.appendChild(score);
Text tScore= doc.createTextNode("...");
score.appendChild(tScore);
然后把student加到跟接点上。
之后
student = doc.createElement("student");
id = doc.createElement("id");
student.appendChild(id);
....
最后也要把把student加到跟接点上

下面都是这样,这跟你加一个STUDENT结点是没区别的。只不过用复用了变量。
如果你喜欢你大可以定义两个变量名,不过是多余而已!


老牛明知夕阳晚,不用扬鞭自奋蹄; Angelo\'s BLOG
2006-12-22 17:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-111335-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112789 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved