关于java读取xml

CloudX2019 2011-10-31 02:09:42

<?xml version="1.0" encoding="UTF-8"?>
<users>
<user>
<id>1</id>
<username>admin</username>
<userpass>123456</userpass>
</user>
<user>
<id>2</id>
<username>zhang</username>
<userpass>123456</userpass>
</user>
</users>


自己写的xml

然后想在登录页面登录时候查询xml,看xml中有没有这个user对象,有就返回user对象

怎么弄啊。。。。
给点思路,网上搜的查询代码貌似都不行
...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
杜元鹏 2011-10-31
  • 打赏
  • 举报
回复
感谢 hanjiaming
nizhicheng 2011-10-31
  • 打赏
  • 举报
回复
哈哈 我随便了改了下~ 自己从头敲 代码那这么快啊
良才2015 2011-10-31
  • 打赏
  • 举报
回复
有四种方法,楼主自己借鉴下,做出相应的修改
第一种 DOM 实现方法:

Java代码
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

public class MyXMLReader2DOM {
public static void main(String arge[]) {

long lasting = System.currentTimeMillis();

try {
File f = new File("data_10k.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("VALUE");
for (int i = 0; i < nl.getLength(); i++) {
System.out.print("车牌号码:"+ doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("车主地址:"+ doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

public class MyXMLReader2DOM {
public static void main(String arge[]) {

long lasting = System.currentTimeMillis();

try {
File f = new File("data_10k.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("VALUE");
for (int i = 0; i < nl.getLength(); i++) {
System.out.print("车牌号码:"+ doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("车主地址:"+ doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}第二种,DOM4J实现方法:

Java代码
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;

public class MyXMLReader2DOM4J {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("data_10k.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
foo = (Element) i.next();
System.out.print("车牌号码:" + foo.elementText("NO"));
System.out.println("车主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;

public class MyXMLReader2DOM4J {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("data_10k.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
foo = (Element) i.next();
System.out.print("车牌号码:" + foo.elementText("NO"));
System.out.println("车主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}第三种 JDOM实现方法:

Java代码
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;

public class MyXMLReader2JDOM {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("data_10k.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for (int i = 0; i < allChildren.size(); i++) {
System.out.print("车牌号码:"+ ((Element) allChildren.get(i)).getChild("NO").getText());
System.out.println("车主地址:"+ ((Element) allChildren.get(i)).getChild("ADDR").getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;

public class MyXMLReader2JDOM {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("data_10k.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for (int i = 0; i < allChildren.size(); i++) {
System.out.print("车牌号码:"+ ((Element) allChildren.get(i)).getChild("NO").getText());
System.out.println("车主地址:"+ ((Element) allChildren.get(i)).getChild("ADDR").getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
第四种SAX实现方法:

Java代码
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class MyXMLReader2SAX extends DefaultHandler {

java.util.Stack tags = new java.util.Stack();

public MyXMLReader2SAX() {
super();
}

public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
MyXMLReader2SAX reader = new MyXMLReader2SAX();
sp.parse(new InputSource("data_10k.xml"), reader);
} catch (Exception e) {
e.printStackTrace();
}

System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)
+ "毫秒");
}

public void characters(char ch[], int start, int length)
throws SAXException {
String tag = (String) tags.peek();
if (tag.equals("NO")) {
System.out.print("车牌号码:" + new String(ch, start, length));
}
if (tag.equals("ADDR")) {
System.out.println("地址:" + new String(ch, start, length));
}
}

public void startElement(String uri, String localName, String qName,
Attributes attrs) {
tags.push(qName);
}
}
良才2015 2011-10-31
  • 打赏
  • 举报
回复
3楼正解,但是,long lasting = System.currentTimeMillis();
好像没有作用嘛,呵呵
nizhicheng 2011-10-31
  • 打赏
  • 举报
回复

import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;

public class D {
public static void main(String arge[]) {

long lasting = System.currentTimeMillis();
try {
File f = new File("D://test.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("user");
for (int i = 0; i < nl.getLength(); i++) {
System.out.print("ID:" + doc.getElementsByTagName("id").item(i).getFirstChild().getNodeValue());
System.out.println("username:" + doc.getElementsByTagName("username").item(i).getFirstChild().getNodeValue());
System.out.println("userpass:" + doc.getElementsByTagName("userpass").item(i).getFirstChild().getNodeValue());


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


输出
ID:1username:admin
userpass:123456
ID:2username:zhang
userpass:123456
歆鸿 2011-10-31
  • 打赏
  • 举报
回复
ArrayList<User> list = new ArrayList<User>();

List<Element> idList = doc.selectNodes("//users/user/id");
List<Element> nameList = doc.selectNodes("//users/user/username");
List<Element> passwordList = doc.selectNodes("//users/user/userpass");

int count = idList.size();
for (int i = 0; i < count; i++) {
Element id = idList.get(i);
Element name = nameList.get(i);
Element password = passwordList.get(i);

User user = new User (id.getText());
user .setName(name.getText());
user .setPassword(password.getText());

list.add(user);
}

然后你再把list循环一遍,就知道有没有你的user了。。。。
gukuitian 2011-10-31
  • 打赏
  • 举报
回复
dom4j

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧