问题标签 [stax]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4393 浏览

java - 使用 StAX 对 XML 文档进行小修改

我目前正在尝试读取 XML 文件,进行一些小的更改(更改某些属性的值),然后再次将其写回。

我打算使用 StAXjavax.xml.stream.XMLStreamReader解析器javax.xml.stream.XMLStreamReader

不幸的是,这看起来并不那么简单——编写者没有办法获取事件类型和解析器对象,只有像writeAttribute和这样的方法writeStartElement。显然,我可以为 XML 文档中可能出现的每种可能类型的元素编写一个带有 case 的大 switch 语句,然后再次将其写回,但对于看起来应该很简单的事情来说,这似乎很麻烦.

有没有什么我遗漏的东西可以很容易地写出一个与你用 StAX 读到的非常相似的 XML 文档?

0 投票
9 回答
1879 浏览

java - 您将如何使用 Java 来处理各种 XML 文档?

我正在寻找使用 Java 应用程序解析各种 XML 文档的最佳方法。我目前正在使用 SAX 和自定义内容处理程序执行此操作,并且效果很好 - 快速且稳定。

我决定探索具有相同程序的选项,该程序当前接收单一格式的 XML 文档,接收两种额外的 XML 文档格式,以及各种 XML 元素更改。我希望根据文档中的第一个“startElement”将 ContentHandler 换成适当的内容处理程序......但是,呃,呃,设置了 ContentHandler,然后解析了文档!

所以,我似乎无法以我最初认为的方式做到这一点。

话虽这么说,我认为这完全错误吗?用相同的 XML 处理代码解析多个离散的 XML 文档的最佳方法是什么? 我之前试图在更笼统的帖子中提问……但是,我认为我太含糊了。出于速度和效率的目的,我从未真正关注过 DOM,因为这些 XML 文档相当大,系统每隔几分钟就会收到大约 1200 个。这只是一种信息发送方式

使这个问题太长并增加我的困惑;以下是一些我想要一个 SAX、StAX 或 ?? 的各种 XML 文档的模型。解析器干净地处理。

产品.xml:

商店.xml:

管理器.xml:

0 投票
4 回答
9369 浏览

java - 最佳 StAX 实施

我的快速搜索显示了参考实现 ( http://stax.codehaus.org )、Woodstox 实现 ( http://woodstox.codehaus.org ) 和 Sun 的 SJSXP 实现 ( https://sjsxp.dev.java.net /)。

请评论这些的相对优点,并填写我应该考虑的任何其他实现。

0 投票
2 回答
1750 浏览

java - JAXB 或 StAX 消息限制

我目前正在使用 Axis 2 实现在 Bea Websphere 6.1 环境中开发 WebService,我正在尝试尊重 Web 服务的当前标准(JAXB、JAXWS、StAX ...)。

在这个平台上,一条 XML 消息可以存在多长时间?

我四处搜索,但没有找到与该主题相关的任何内容。

0 投票
10 回答
32265 浏览

java - Java 中的 StAX XML 格式

是否可以使用 StAX(特别是 woodstox)使用换行符和制表符格式化输出 xml,即格式为:

代替:

如果这在woodstox 中是不可能的,是否还有其他轻量级库可以做到这一点?

0 投票
2 回答
2007 浏览

java - 如何阻止 Sun JDK1.6 内置 StAX 解析器解析 DTD 实体

我正在使用基于 StAX 事件的 API 来修改 XML 流。该流代表一个 HTML 文档,带有 DTD 声明。我想将此 DTD 声明复制到输出文档中(使用 编写XMLEventWriter)。当我要求工厂忽略 DTD 时,它不会下载 DTD,而是删除整个语句,只留下一个“ <!DOCUMENTTYPE”字符串。如果不忽略,则下载整个 DTD,并在逐字输出 DTD 事件时包含在内。我不想花时间下载这个 DTD,但要包含完整的 DTD 规范(解析实体已被禁用,我不需要它)。有谁知道如何禁用外部 DTD 的获取。

0 投票
3 回答
2645 浏览

java - 如何使用 Java StAX 格式化和读取 XML 处理指令?

首先,我如何格式化XML处理指令,是不是:

使用 StAX,然后我想通过处理XMLStreamConstants.PROCESSING_INSTRUCTION( javadoc ) 事件来读取它,但它只提供了两种方法来从以下位置检索有关处理指令的信息XMLStreamReader

这两种方法的javadoc不是很有帮助。

  1. XML 格式是否正确?
  2. 这是使用 StAX XMLStreamReader API 解析处理指令的正确方法吗?
  3. 如何使用getPITarget()getPIData()返回多个参数?
0 投票
3 回答
668 浏览

java - Google App Engine 背后的逻辑(如果有),不包括标准 JDK 1.6 API

看起来 GAE 选择了 JDK 1.6 类的一个子集,如下所示:

Google App Engine JDK 白名单

这是非常不幸的,因为处理数据绑定、反射、类加载和注释的最常见的 Java 库到处都有类链接错误。尽管有些遗漏可能是针对已弃用或遗留的东西,但也有其他遗漏。我特别关心的是流式拉解析器 (javax.xml.stream.*),它在长时间延迟后才添加到 JDK 1.6(API 与 JDK 1.4 大约同时完成)。忽略这一点会使进行可扩展的高性能 xml 处理变得更加困难。

据我了解,问题不仅是缺少类,而且由于安全限制,它们甚至无法添加。

所以:这是一个开放式的哲学问题,可能只有 GAE 开发人员可以肯定地回答,但是......为什么有些 API 从标准 JDK 1.6 中删除,似乎是武断的?

更新

快速说明:感谢您的回答。对于它的价值,我真的看不出安全性与不包括 javax.xml.stream 有什么关系。安全方面与许多其他事情相关(例如,我不需要线程,并且可以看到它们为什么会出现),所以这是可以理解的样板答案;只是不适用于这个。

Stax API 只是一组用于大声喊叫的接口和抽象。但更重要的是,它具有与包括 SAX、DOM 和 JAXP 接口完全相同的分支——这些接口已经包含在内!

但看起来这个问题已经引起了谷歌开发者的注意:

关于将 Stax API 列入白名单的讨论

所以这里希望这个和类似的问题可以迅速得到解决。

0 投票
3 回答
3946 浏览

java - 从 Java NIO 通道解析 StAX

我正在尝试通过 Java NIO 通道接收 XML 事件流。我对 NIO 和 StAX 解析都是新手,所以我很容易忽略一些东西:)

我的搜索使我找到了几个 SAX 和 StAX 实现,但它们似乎都在 InputStreams 和 InputSources 上运行,而不是 NIO 通道。我做过的两个最接近的尝试是从通道中获取 InputStream 并创建一个 PipedInputStream:

其次是:

当上面的代码与方法 1 一起使用时,它会阻塞在 createXMLStreamReader 行上。当使用方法 2/3 时,它们会立即抛出 IllegalBlockingModeException(我明白为什么)。也许需要一种新方法?

我的目标是让非阻塞服务器选择 => 接受来自客户端的字符数据 => 使用特定编码将其解析为 XML 事件 => 将该事件对象转发到另一个线程进行处理 => 并返回到选择。

那么我是否忽略了某些东西,还是有更好的方法可以使用?如果是这样呢?

谢谢!

0 投票
1 回答
2430 浏览

java - 带有 XMLEventWriter 的自闭合标签

所以这个问题与标题中所说的差不多。我正在做一些 xml 工作并使用 XMLEventWriter。我遇到的最大问题是我需要创建一些自闭合标签

问题是我还没有想出用 eventWriter 做到这一点的方法。我已经尝试了所有我能想到的使用 XMLEventFactory 的方法,但似乎没有任何效果。任何帮助将不胜感激。