如何使用 StaX

2023-12-28

大家好,我是 Java-XML 解析领域的新手,我发现 StaX API 可能是我最好的选择,因为我需要读取和写入 XML 文件。好吧,我有一个非常短(应该非常简单)的程序,它(应该)创建一个 XMLInputFactory 并使用它来创建一个 XMLStreamReader。 XMLStreamReader 是使用附加到与源文件位于同一目录中的 XML 文件的 FileInputStream 创建的。然而,即使 FileInputStream 正确编译,XMLInputFactory 也无法访问它,并且如果没有 FileInputStream,它就无法创建 XMLStreamReader。请帮助我,因为我不知道该怎么做,并且很沮丧,以至于要放弃!

import javax.xml.stream.*;
import java.io.*;
public class xml {
    static String status;
    public static void main(String[] args) {
        status = "Program has started";
        printStatus();      
        XMLInputFactory inFactory = XMLInputFactory.newInstance();
            status = "XMLInputFactory (inFactory) defined"; printStatus();
        try { FileInputStream fIS = new FileInputStream("stax.xml"); }
            catch (FileNotFoundException na) { System.out.println("FileNotFound"); }
            status = "InputStream (fIS) declared"; printStatus();
        try { XMLStreamReader xmlReader = inFactory.createXMLStreamReader(fIS); } catch (XMLStreamException xmle) { System.out.println(xmle); }
            status = "XMLStreamReader (xmlReader) created by 'inFactory'"; printStatus();
    }
    public static void printStatus(){ //this is a little code that send notifications when something has been done
        System.out.println("Status: " + status);
    }
}

如果您需要的话,这里还有 XML 文件:

<?xml version="1.0"?>
    <dennis>
        <hair>brown</hair>
        <pants>blue</pants>
        <gender>male</gender>
    </dennis>

你的问题与基本的java编程有关,与stax无关。您的 FileInputStream 的范围位于 try 块内(一些合适的代码格式会有所帮助),因此对于您尝试创建 XMLStreamReader 的代码不可见。与格式:

    XMLInputFactory inFactory = XMLInputFactory.newInstance();
    try {
        // fIS is only visible within this try{} block
        FileInputStream fIS = new FileInputStream("stax.xml");
    } catch (FileNotFoundException na) {
        System.out.println("FileNotFound");
    }
    try {
        // fIS is not visible here
        XMLStreamReader xmlReader = inFactory.createXMLStreamReader(fIS);
    } catch (XMLStreamException xmle) {
        System.out.println(xmle);
    }

其次,StAX 是一个很好的 API,并且非常适合在 java 中进行高性能 XML 处理。然而,这并不是simplestXML API。您可能最好从基于 DOM 的 api 开始,并且仅在使用 DOM 遇到性能问题时才使用 StAX。如果你do留在StAX,我建议使用XMLEventReader代替XMLStreamReader(同样,一个更简单的 api)。

最后,不要隐藏异常详细信息(例如捕获它们并打印出不包含异常本身的内容)或忽略它们(例如在抛出异常后继续处理而不尝试处理问题)。

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

如何使用 StaX 的相关文章

随机推荐

  • 如何在Ruby中实现注入?

    我需要能够使用这个调用 h x inject a b a b one b two a 其中 x 是 Couple 对象的序列 这些对象仅包含两个数字字段 一和二 我不知道如何在 Couple 中实现注入方法 定义一个 each中的方法Cou
  • 将静态 SQL 转换为动态 SQL

    我有一个静态 SQL 查询 它可以查找空白计数和数据类型 无论是数字还是字母数字等 下面是查询 SELECT case when Pattern then BLANK else Pattern end AS Pattern LEN case
  • Symfony Doctrine 实体好友有好友关注者

    我需要在我的项目中设置关注者 以下 myFriends hasFriend 逻辑 odobera 列的意思是 关注 例如 nick id user odobera 关注此用户 用户 25 正在关注用户 37 请求表 User entity
  • 为什么 Windows 7 上的 Ruby 1.9.2 使用 1.9.1 的 gems 路径?它使用 c:/ruby192/lib/ruby/gems/1.9.1/gems/railties-3.0.0/lib/rails/commands.rb

    我使用一键安装程序将 Ruby 1 9 2 安装到 c ruby192 它没有设置任何路径 因此我将其设置为在路径的最开头包含 c ruby192 但是当它在某些事情上出错时 对于 Rails 3 0 路径会显示 Error message
  • 为什么模除法 (%) 只适用于整数?

    我最近遇到了an issue https stackoverflow com questions 6091837 sin and cos are slow is there an alternatve 6091846 6091846使用模除
  • ag grid sizeColumnsToFit 对于列不起作用

    我使用了 ag grid ng2 并尝试应用 sizeColumnsToFit 例如 如果有 4 列 那么它应该自动调整大小并适合网格的宽度 gridOptions api sizeColumnsToFit 不起作用 var gridOpt
  • 如何在 Silex 中使用“渲染”在 Twig 中插入控制器

    它应该在 Silex 中与 symfony twig bridge 一起工作吗 render controller MyController 现在我有这样的消息 Twig Error Syntax 函数 控制器 不存在于 中 您可以这样使用
  • 泛型类的静态成员是否与特定实例相关?

    这更像是一个文档而不是一个真正的问题 这似乎还没有得到解决 除非我错过了 所以这里是 想象一个包含静态成员的泛型类 class Foo
  • 使用 node-soap 创建 SOAP Web 服务

    我遵循了 git repo 的这个例子 https github com vpulim node soap https github com vpulim node soap 问题1 我已经创建了一个服务器 是否需要在回调中创建服务器 据我
  • .NET Core HttpRequest 标头优先级是什么?

    目前我正在做一个http请求发送任务 我知道我们有不同的方法来向请求添加标头 HttpClient DefaultRequestHeaders HttpRequestMessage Headers HttpContent Headers 如
  • Django-1.3 beta 的问题

    伙计们 我非常热衷于学习 django 并在 Django 1 2 上学习了一些 但后来我安装了 1 3 版本 直到我使用命令 python manage py runserver 运行服务器为止 它给出了一个巨大的错误 我想不出解决这个问
  • 粒子系统的性能

    情况 我使用以下技术使用 JavaFX 创建了一个粒子系统 每个粒子都是一个 ImageView 其中包含一个具有径向渐变的 Image 粒子处理循环是一个AnimationTimer 其中粒子列表通过列表的stream parallel
  • Bukkit 传送 - nullPointerException

    我正在尝试使用以下代码将用户传送到他们自己的领域 EventHandler public static void onPortalTravel PlayerPortalEvent event throws Exception if even
  • 屏幕截图中的模板匹配

    我是 Python 新手 但想学一点 所以我决定创建一个程序 与桌面输入的模板匹配 有人能帮忙吗 如何编写与桌面流匹配的模板 import time import cv2 import mss import numpy template c
  • Webpack:Webpack 内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 据我所知 Webpack 是一个用于组织项目中资产的工具 不过 我不明白它内部是如何工作的 看起来有点神奇 是否有某种运行时引擎来解析
  • 可以使用实体框架迁移将 DateTime 字段默认为 GETDATE() 吗?

    我将 EntityFramework Migrations Beta 1 添加到现有的 Code First 应用程序中 该应用程序正在经历一些更改 对于迁移功能以及对我从代码优先 API 生成的表进行更多微调 并遇到 GETDATE 设想
  • Laravel excel 在导入前获取总行数

    直截了当的问题 如何使用 laravel excel 获取电子表格中的总行数 我现在有一个工作计数器 用于记录已处理的行数 在CompanyImport文件 但在开始将行添加到数据库之前我需要总行数 我正在导入的工作表几乎有 100 万行
  • Angular Formly:如何将类添加到包装 div

  • 返回用户的管理员 samaccountname

    我需要创建 AD 中所有活动用户的 CSV 文件 包括直线经理属性 但是我需要直线经理sAMAccountName 不是cn 这是我到目前为止所拥有的 Get ADUser server server ip Filter mail like
  • 如何使用 StaX

    大家好 我是 Java XML 解析领域的新手 我发现 StaX API 可能是我最好的选择 因为我需要读取和写入 XML 文件 好吧 我有一个非常短 应该非常简单 的程序 它 应该 创建一个 XMLInputFactory 并使用它来创建