java读取xml文件的四种方法

2023-05-16

Xml代码

复制代码

 1 <?xml version="1.0" encoding="GB2312"?>  
 2 <RESULT>  
 3 <VALUE>     
 4   <NO>A1234</NO>     
 5   <ADDR>河南省郑州市</ADDR>  
 6 </VALUE>  
 7 <VALUE>     
 8   <NO>B1234</NO>     
 9   <ADDR>河南省郑州市二七区</ADDR>  
10 </VALUE>  
11 </RESULT>

复制代码

第一种 DOM 实现方法:

复制代码

 1 import java.io.File;   
 2   
 3 import javax.xml.parsers.DocumentBuilder;   
 4 import javax.xml.parsers.DocumentBuilderFactory;   
 5   
 6 import org.w3c.dom.Document;   
 7 import org.w3c.dom.NodeList;   
 8   
 9 public class MyXMLReader2DOM {   
10 public static void main(String arge[]) {   
11   
12   long lasting = System.currentTimeMillis();   
13   
14   try {   
15     File f = new File("data_10k.xml");   
16     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();   
17     DocumentBuilder builder = factory.newDocumentBuilder();   
18     Document doc = builder.parse(f);   
19     NodeList nl = doc.getElementsByTagName_r("VALUE");   
20    for (int i = 0; i < nl.getLength(); i++) {   
21      System.out.print("车牌号码:"+ doc.getElementsByTagName_r("NO").item(i).getFirstChild().getNodeValue());   
22      System.out.println("车主地址:"+ doc.getElementsByTagName_r("ADDR").item(i).getFirstChild().getNodeValue());   
23     }   
24    } catch (Exception e) {   
25     e.printStackTrace();   
26    }   
27 }   
28 }  

复制代码

第二种,DOM4J实现方法

复制代码

 1 import java.io.*;   
 2 import java.util.*;   
 3 import org.dom4j.*;   
 4 import org.dom4j.io.*;   
 5   
 6 public class MyXMLReader2DOM4J {   
 7 public static void main(String arge[]) {   
 8   long lasting = System.currentTimeMillis();   
 9   try {   
10     File f = new File("data_10k.xml");   
11     SAXReader reader = new SAXReader();   
12     Document doc = reader.read(f);   
13     Element root = doc.getRootElement();   
14     Element foo;   
15    for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {   
16      foo = (Element) i.next();   
17      System.out.print("车牌号码:" + foo.elementText("NO"));   
18      System.out.println("车主地址:" + foo.elementText("ADDR"));   
19     }   
20    } catch (Exception e) {   
21     e.printStackTrace();   
22    }   
23 }   
24 }  

复制代码

第三种 JDOM实现方法:

复制代码

 1 import java.io.*;   
 2 import java.util.*;   
 3 import org.jdom.*;   
 4 import org.jdom.input.*;   
 5   
 6 public class MyXMLReader2JDOM {   
 7 public static void main(String arge[]) {   
 8   long lasting = System.currentTimeMillis();   
 9   try {   
10     SAXBuilder builder = new SAXBuilder();   
11     Document doc = builder.build(new File("data_10k.xml"));   
12     Element foo = doc.getRootElement();   
13     List allChildren = foo.getChildren();   
14    for (int i = 0; i < allChildren.size(); i++) {   
15      System.out.print("车牌号码:"+ ((Element) allChildren.get(i)).getChild("NO").getText());   
16      System.out.println("车主地址:"+ ((Element) allChildren.get(i)).getChild("ADDR").getText());   
17     }   
18    } catch (Exception e) {   
19     e.printStackTrace();   
20    }   
21 }   
22 }

复制代码

第四种SAX实现方法:

复制代码

 1 import javax.xml.parsers.SAXParser;   
 2 import javax.xml.parsers.SAXParserFactory;   
 3   
 4 import org.xml.sax.Attributes;   
 5 import org.xml.sax.InputSource;   
 6 import org.xml.sax.SAXException;   
 7 import org.xml.sax.helpers.DefaultHandler;   
 8   
 9 public class MyXMLReader2SAX extends DefaultHandler {   
10   
11 java.util.Stack tags = new java.util.Stack();   
12   
13 public MyXMLReader2SAX() {   
14   super();   
15 }   
16   
17 public static void main(String args[]) {   
18   long lasting = System.currentTimeMillis();   
19   try {   
20     SAXParserFactory sf = SAXParserFactory.newInstance();   
21     SAXParser sp = sf.newSAXParser();   
22     MyXMLReader2SAX reader = new MyXMLReader2SAX();   
23     sp.parse(new InputSource("data_10k.xml"), reader);   
24    } catch (Exception e) {   
25     e.printStackTrace();   
26    }   
27   
28    System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)   
29      + "毫秒");   
30 }   
31   
32 public void characters(char ch[], int start, int length)   
33    throws SAXException {   
34    String tag = (String) tags.peek();   
35   if (tag.equals("NO")) {   
36     System.out.print("车牌号码:" + new String(ch, start, length));   
37    }   
38   if (tag.equals("ADDR")) {   
39     System.out.println("地址:" + new String(ch, start, length));   
40    }   
41 }   
42   
43 public void startElement(String uri, String localName, String qName,   
44     Attributes attrs) {   
45    tags.push(qName);   
46 }   
47 } 

复制代码

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java读取xml文件的四种方法 的相关文章

  • 为 JSP 创建注销链接?

    当用户登录我的应用程序时 他提交一个要通过 Servlet 处理的表单 servlet 为用户创建一个会话 我如何创建一个链接以便用户可以注销 我似乎无法直接链接到 Servlet 如何删除会话并链接回主页 HttpSession sess
  • 检查两个日期周期是否重叠[重复]

    这个问题在这里已经有答案了 我有两个日期范围 start1 end1 gt gt date1 start2 end2 gt gt date2 我想检查两个日期是否重叠 我的流程图我假设 运算符对于比较是有效的 boolean isOverL
  • 从 Windows Batch (cmd.exe) 中的文件读取环境变量

    我正在尝试从批处理文件中读取变量 以便稍后在批处理脚本 Java 启动器 中使用 理想情况下 我希望所有平台 Unix Windows 上的设置文件都具有相同的格式 并且也是有效的 Java 属性文件 也就是说 它应该看起来像这样 sett
  • 在 Java 中将字符串复制到文件的开头

    我想将一个字符串写入文件的开头 我该怎么做 我根本不知道如何添加字符串 这就是我到目前为止所做的 public static void prepend String filename String data throws IOExcepti
  • .NET 世界有 Maven 替代方案或端口吗?

    NET 世界有 Maven 替代方案或端口吗 我很想使用 Java 世界拥有的良好依赖管理系统 但我没有找到任何可与 NET 项目相媲美的系统 NMaven http incubator apache org nmaven 是第一个 官方努
  • java中的散列是如何工作的?

    我正在尝试弄清楚java中的哈希值 例如 如果我想在哈希图中存储一些数据 它是否会有某种带有哈希值的底层哈希表 或者 如果有人能够对哈希的工作原理给出一个很好且简单的解释 我将非常感激 HashMap 基本上在内部实现为数组Entry 如果
  • 如何用 Java 制作 Windows 7 工具提示

    我一直在网上到处寻找 但没有找到这个小问题的答案 在 Windows 7 中 我认为在 Vista 中 您有一个漂亮的圆形银色工具提示 它看起来比旧的黄色盒装蹩脚工具提示要好得多 下面的 How do I make a Windows 7
  • 如何在休眠中持久保存实体期间验证实体的约束

    我有一个带有字段名称的实体 我希望它不超过255 所以我这样定义它 Entity public class A implements Serializable NotNull Size max 255 private String name
  • 在 Selenium Grid 中注册 PhantomJS 节点时出错

    我有以下问题 我成功启动了 Selenium Grid hub java jar selenium server standalone 2 53 0 jar role hub 之后我尝试使用以下命令启动 PhantomJS 节点 phant
  • 控制启动时的竞争条件

    我有一些代码想要执行一些一次性初始化 但这段代码没有明确的生命周期 因此在初始化完成之前 我的逻辑可能会被多个线程调用 所以 我想基本上确保我的逻辑代码 等待 直到初始化完成 这是我的第一次剪辑 public class MyClass p
  • 如何在 HashiCorp Vault 中安全地存储 Spring Boot 应用程序的机密?

    我已阅读以下教程 保险库配置 https spring io guides gs vault config 好的 我们安装了 Vault 服务器并放置了 2 对秘密属性 vault kv put secret gs vault config
  • 使用 JPA 标准的“不在”约束

    我正在尝试写一个NOT IN约束使用JPA Criteria 我尝试过这样的事情 builder not builder in root get property1 虽然我知道这行不通 在上面的语法中 如何添加集合 列表property1会
  • 单击“发送”按钮事件时,我们可以在哪里获取 xml/元数据格式的表单数据?

    我是一个新的 scala 学习者 作为要求的一部分 我需要将表单数据插入 activemq 队列中以进行提交事件 我尝试调试发送方法代码 以了解单击 FormRunnerActions scala 类中的发送按钮时我们到底在哪里获取 xml
  • Apache Camel - 路由中的事务

    我有一个关于 Apache Camel 的一般性问题 我无法找到聚合器是否已进行交易 如果是交易 交易是如何实现的 聚合的速度有多快 将消息发送到聚合器可以在事务中运行 您需要一个带有聚合器的持久存储来让传出消息充当事务 请参阅有关持久性的
  • 复制除根节点和属性 XSLT 之外的 XML 文件内容

    我正在处理一个小的 XSLT 文件来复制 XML 文件的内容并删除声明和根节点 根节点具有名称空间属性 我目前正在使用它 除了现在名称空间属性现在被复制到直接子节点之外 这是到目前为止我的 xslt 文件 没什么大或复杂的
  • CXF 增加连接池大小而不更改 http.maxConnections

    最近我被要求将 CXF 配置为与我们旧的 XFire 服务相同的参数 这些参数之一是Keep Alive timeout 60 max 20 然而 我做了一些研究 看来 CXF 使用 JVMHttpURLConnection引擎盖下的对象
  • 谷歌的Json解析Gson库:JsonElement和JsonObject有什么区别?

    public abstract class JsonElement extends Object 表示 Json 元素的类 它可以是 JsonObject JsonArray JsonPrimitive 或 JsonNull public
  • 如何根据受保护的 String doInBackground 方法中 AsyncTask 的结果调用 Toast.makeText() ?

    我从 AsyncTask 中的数据库中获取数据 如果它为空 我想吐司一个警告文本 我在 AsyncTask 中尝试过 但我了解到它不是在工作线程中调用的 这是我的 doInBackground 方法 protected String doI
  • 如何在不下载子项的情况下从 Firebase 获取子项密钥?

    我有一个 Firebase 数据库 其中的节点 items 有很多子项 我想导入子项键的列表 由于每个子项都包含相当多我对此不感兴趣的数据 因此我想仅下载子项密钥 以最大程度地减少传输的数据量 为了便于说明 假设我有以下数据结构 然后我想获
  • 如何读取FTL文件中的JSONArray?

    我在我的 Java 文件中硬编码了以下 JSON 对象 JSONObject notificationInfoJson new JSONObject notificationInfoJson put title Payment Receiv

随机推荐