「java获取xml文件」javaxml

博主:adminadmin 2023-01-24 21:24:11 422

本篇文章给大家谈谈java获取xml文件,以及javaxml对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java读取xml文件有几中方法??各有什么优劣????

xml文件:Xml代码?xmlversion=1.0encoding=GB2312?RESULTVALUENOA1234/NO ADDR河南省郑州市/ADDR/VALUEVALUENOB1234/NO ADDR河南省郑州市二七区/ADDR/VALUE第一种DOM实现方法:Java代码importjava.io.File; importjavax.xml.parsers.DocumentBuilder; importjavax.xml.parsers.DocumentBuilderFactory; importorg.w3c.dom.Document; importorg.w3c.dom.NodeList; publicclassMyXMLReader2DOM{ publicstaticvoidmain(Stringarge[]){ longlasting=System.currentTimeMillis();try{Filef=newFile(data_10k.xml); DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); DocumentBuilderbuilder=factory.newDocumentBuilder(); Documentdoc=builder.parse(f); NodeListnl=doc.getElementsByTagName(VALUE); for(inti=0;inl.getLength();i++){ System.out.print(车牌号码:+doc.getElementsByTagName(NO).item(i).getFirstChild().getNodeValue()); System.out.println(车主地址:+doc.getElementsByTagName(ADDR).item(i).getFirstChild().getNodeValue()); System.out.println(运行时间:+(System.currentTimeMillis()-lasting)+毫秒);}}}catch(Exceptione){ e.printStackTrace();}}})DOM4J性能最好,连Sun的JAXM也在用DOM4J.目前许多开源项目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J来读取XML配置文件。如果不考虑可移植性,那就采用DOM4J. 2)JDOM和DOM在性能测试时表现不佳,在测试10M文档时内存溢出。在小文档情况下还值得考虑使用DOM和JDOM.虽然JDOM的开发者已经说明他们期望在正式发行版前专注性能问题,但是从性能观点来看,它确实没有值得推荐之处。另外,DOM仍是一个非常好的选择。DOM实现广泛应用于多种编程语言。它还是许多其它与XML相关的标准的基础,因为它正式获得W3C推荐(与基于非标准的Java模型相对),所以在某些类型的项目中可能也需要它(如在JavaScript中使用DOM)。 3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。

如何用java读取xml文件

1利用dom对象,直接查找标签

2利用工具类,比如xmlbean,直接将xml映像成javabean

JAVA获取XML文件并输出

// 给你一个例子,你参考下

// java通过dom读写xml文件

 

/*要读的xml文件

?xml version="1.0" encoding="GB2312"?

学生花名册

  学生 性别 = "男"

      姓名李华/姓名

      年龄14/年龄

  /学生

  学生 性别 = "男"

      姓名张三/姓名

      年龄16/年龄 

 /学生

/学生花名册  

*/ 

 

package xml;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.Iterator;

import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import javax.xml.transform.OutputKeys;

import javax.xml.transform.Result;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerConfigurationException;

import javax.xml.transform.TransformerException;

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;

import org.w3c.dom.NodeList;

import org.w3c.dom.Text;

public class DomTest {

 Vector students_Vector;

 private Vector readXMLFile(String file) throws Exception {

  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

  DocumentBuilder builder = dbf.newDocumentBuilder();

  Document doc = builder.parse(file); // 获取到xml文件

  // 下面开始读取

  Element root = doc.getDocumentElement(); // 获取根元素

  NodeList students = root.getElementsByTagName_r("学生");

  students_Vector = new Vector();

  for (int i = 0; i  students.getLength(); i++) {

   // 一次取得每一个学生元素

   Element ss = (Element) students.item(i);

   // 创建一个学生的实例

   student stu = new student();

   stu.setSex(ss.getAttribute("性别"));

   NodeList names = ss.getElementsByTagName_r("姓名");

   Element e = (Element) names.item(0);

   Node t = e.getFirstChild();

   stu.setName(t.getNodeValue());

   NodeList ages = ss.getElementsByTagName_r("年龄");

   e = (Element) ages.item(0);

   t = e.getFirstChild();

   stu.setAge(Integer.parseInt(t.getNodeValue()));

   students_Vector.add(stu);

  }

  return students_Vector;

 }

 // 写入xml文件

 public static void callWriteXmlFile(Document doc, Writer w, String encoding) {

  try {

   Source source = new DOMSource(doc);

   Result result = new StreamResult(w);

   Transformer xformer = TransformerFactory.newInstance()

     .newTransformer();

   xformer.setOutputProperty(OutputKeys.ENCODING, encoding);

   xformer.transform(source, result);

  } catch (TransformerConfigurationException e) {

   e.printStackTrace();

  } catch (TransformerException e) {

   e.printStackTrace();

  }

 }

 private void writeXMLFile(String outfile) {

  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

  DocumentBuilder builder = null;

  try {

   builder = dbf.newDocumentBuilder();

  } catch (Exception e) {

  }

  Document doc = builder.newDocument();

  Element root = doc.createElement("学生花名册");

  doc.appendChild(root); // 将根元素添加到文档上

  // 获取学生信息

  for (int i = 0; i  students_Vector.size(); i++) {

   student s = (student) students_Vector.get(i);

   // 创建一个学生

   Element stu = doc.createElement("学生");

   stu.setAttribute("性别", s.getSex());

   root.appendChild(stu);// 添加属性   

   // 创建文本姓名节点

   Element name = doc.createElement("姓名");

   stu.appendChild(name);

   Text tname = doc.createTextNode(s.getName());

   name.appendChild(tname);

   

   //创建文本年龄节点

   Element age = doc.createElement("年龄");

   stu.appendChild(age); // 将age添加到学生节点上

   Text tage = doc.createTextNode(String.valueOf(s.getAge()));

   age.appendChild(tage); // 将文本节点放在age节点上

  }

  try {

   FileOutputStream fos = new FileOutputStream(outfile);

   OutputStreamWriter outwriter = new OutputStreamWriter(fos);

   // ((XmlDocument)doc).write(outwriter); //出错!

   callWriteXmlFile(doc, outwriter, "gb2312");

   outwriter.close();

   fos.close();

  } catch (Exception e) {

   e.printStackTrace();

  }

 }

 public static void main(String args[]) {

  String str = "xml/student.xml";

  DomTest t = new DomTest();

  try {

   Vector v = t.readXMLFile(str);

   Iterator it = v.iterator();

   while (it.hasNext()) {

    student s = (student) it.next();

    System.out.println(s.getName() + "\t" + s.getAge() + "\t"

      + s.getSex());

   }

  } catch (Exception e) {

   e.printStackTrace();

  }

  String outfile = "xml/stucopy.xml";

  t.writeXMLFile(outfile);

 }

}

class student{

 private String sex;

 private String name;

 private int age;

 public int getAge() {

  return age;

 }

 public void setAge(int age) {

  this.age = age;

 }

 public void setSex(String s){sex=s;}

 public String getSex(){return sex;}

 public void setName(String n){name=n;}

 public String getName(){return name;}

 }

java,如何读取xml文件?

用dom4j的xpath方式来解析,XPATH为:

/cities/province/item[text()='你的城市']/parent::province/@name

下面的代码需要用到:dom4j,jaxen等jar包。

import java.io.File;

import org.dom4j.Element;

import org.dom4j.Node;

import org.dom4j.io.SAXReader;

public class Test {

public static void main(String[] args) throws Exception {

String city = "唐山";

Element root = new SAXReader()

.read(new File(

"E:\\Work\\pera_tech_map\\Products\\Pera.RE\\code\\trunk\\re\\re-web\\src\\main\\resources\\test.xml"))

.getRootElement();

Node e = (Node) root.selectSingleNode("/cities/province/item[text()='"

+ city + "']/parent::province/@name");

if (e != null) {

System.out.println(e.getText());

}

}

}

java 读取 xml

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

//以上是要进行xml文档处理需导入的包和类

public class Xml {

public static void main(String[] args) {

try {

DocumentBuilderFactory factory = DocumentBuilderFactory

.newInstance(); //实例化一个工厂类

DocumentBuilder builder = factory.newDocumentBuilder(); //创建树立xml文档的对象,具体名称我也说不上,其上以上两条语句都是为处理xml文档做准备的,即进行初始化工作

Document document = builder.parse(new File("E:\\xml.xml")); //导入xml文档

Element rootElement = document.getDocumentElement(); //得到根节点对象,即Root

NodeList list = rootElement.getElementsByTagName("Header"); //通过标签名"Header"得到Header结点对象的列表,即所有名为"Header"的结点都被保存在一个list列表对象中

Element element = (Element) list.item(0); //获取第一个list对象,这里就是Header结点

System.out.println(element.getChildNodes().item(0).getNodeValue()); //输出Header结点的第一个子节点的值,这里没有其他子节点,则直接返回"日报表"

} catch (Exception e) {

System.out.println("exception:" + e.getMessage()); //若有异常,则输出异常信息

}

}

}

java获取xml文件的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javaxml、java获取xml文件的信息别忘了在本站进行查找喔。