问题标签 [woodstox]

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 投票
1 回答
331 浏览

java - StAX/StAX2 属性在源 XML 中的位置

我需要为每个提取的文本信息获取源 XML 中的偏移量(开始和结束位置)。

我需要使用 XML PULL READING 模型,所以我一直在尝试使用 StAX 和 StAX2 (Woodstox) 一段时间。

原始 StAX 包含 API:

然而,这个类是相当晦涩的。所以这里是包含改进 API 的 StAX2 (Woodstox):

它通过 LocationInfo 很好地适用于元素和东西。

我的问题: 我怎样才能获得属性的偏移量,因为它们显然是元素的一部分?所以该位置的粒度是在元素级别上->我可以获得整个元素的偏移量,而不是每个属性的偏移量......

提前致谢!

0 投票
1 回答
112 浏览

entity - Woodstox 默认实体已替换

我在 web 服务 xml 响应中有以下标记:<text>"><&</text>

这在我的字符方法中报告为 "><&,但我需要按原样报告 ("><&)。

我已将 XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES 设置为 Boolean.FALSE,但它不起作用。

谁能帮我?

提前致谢。

琼。

0 投票
1 回答
40 浏览

java - 系统架构

我是 Java 新手,我有一个独特的要求。我正在从客户端获取 xml 数据,并且我已经和我一起定义了模式。现在,问题是客户端 xml 的元素比我拥有的模式多得多。如何处理?此外,有些元素的架构与架构中定义的架构不同,我想将其转换为架构所具有的形式。由于模式通常用于验证,这听起来有问题吗?有人可以用小例子给我概述如何处理这个问题吗?

0 投票
0 回答
2050 浏览

java - Unnecessary Namespace in Jackson XML 2.6.1 + Woodstox 4.4.1

I'm trying to parse my object to XML using jackson-dataformat-xml and, when i set the root namespace and parse the file, all properties of my object in the XML gives a empty namespace xmlns="". On jackson's github docs, is advise to use woodstox instead stax XML implementation to solve this but, the behavior still exists.

This is my pojo:

And my parse code:

This is the XML generated:

Any idea where is the problem? My project is under a Spring boot version 1.3.0.M5. Thanks for all.

0 投票
2 回答
247 浏览

java - 使用缓冲读取器读取文件

背景

我正在编写一个 xml 转换器,它从文本文件中获取输入并将它们转换为 xml。在文本文件中,每条记录由一行表示,每个字段用它们之间的制表符表示。所以在文本文件中,两条记录看起来像:

问题

我正在将文本文件加载到 bufferedReader 中,并使用 StAX 实现 WoodStox 创建 XML。我可以看到我从我的 getColumnValue 方法中获得了正确的记录数据。但由于某种原因,WoodStox 一遍又一遍地写入第一条记录,而不是通过 while 循环获取每次传递的数据。由于我知道输入(来自 getColumnValue)是正确的,我只能得出结论,问题出在 Woodstock 但到目前为止我还无法理解为什么......

代码:

0 投票
3 回答
1183 浏览

java - 在 Java 8 中,使用 Woodstox 运行时,名称空间前缀会发生变化

我有一个简单的 Java 程序,如下所示,它读取一个 xml 文件并将其打印在控制台中:

XML 文件:

当我使用woodstox-core-asl-4.4.1、stax2-api-3.1.4axiom在 Java 7 中运行程序时,它工作正常。但是当我在 Java 8 中运行相同的东西时, S:role 和 S:mustunderstand 将更改为 env:role 和 env:mustunderstand (S 前缀更改为 env

如果我从程序中删除woodstox-core-asl-4.4.1stax2-api-3.1.4,它在 Java 8 中也可以正常工作。

我无法弄清楚这里的问题。这是否意味着woodstox 不支持Java 8 或者我错过了其他东西?

0 投票
1 回答
1336 浏览

java - 使用 Woodstox / Stax2 编写 XML 时验证失败

我在使用带有 Woodstox 和 Stax2 的 XSD 模式进行 XML 验证时遇到问题。即使 XML 数据符合架构,验证也会失败。

令人惊讶的是,验证问题仅在编写XML(使用 XMLStreamWriter2)时出现,而不是在读取XML(使用 XMLStreamReader2)时出现。

我建立了一个小例子来重现和隔离错误。基本上,它只是将 XML 从文件读取到 XMLStreamReader2(使用 XSD 模式验证),然后将其复制到 XMLStreamWriter2(也使用相同的 XSD 验证)。

现在,由于writer的验证错误而失败。如果我在 writer 上停用验证,一切都会顺利进行,并且 writer 会提供完全符合 XML 的内容。

这是代码:

这是 XML:

这是架构:

这一切都导致(启用了编写器的验证):

如果没有对编写器进行验证,程序运行良好并返回作为输入提供的相同 XML(以一些缩进和换行差异为模)

所以我的问题是:我在这里对 Woodstox 做错了吗?为什么验证仅在 writer 上失败?

我可以使用其他 XSD 和 XML 对重现此问题,在这种情况下,您可能会遇到不同类型的错误,但总是在编写器方面。阅读器端的验证始终有效(只要 XML 明显符合 XSD)。

任何见解将不胜感激!

PS:供参考,这里是示例使用的依赖项和版本

  • org.codehaus.woodstox stax2-api 4.0.0
  • com.fasterxml.woodstox 伍德斯托克斯核心 5.0.2
  • net.java.dev.msv msv-core 2013.6.1
  • net.java.dev.msv xsdlib 2013.6.1<
0 投票
1 回答
365 浏览

java - 无法使用 aalto 异步解析多个 XML 文档

我正在尝试使用Aalto-xml解析从 tcp 套接字发出的 XML 消息

https://github.com/FasterXML/aalto-xml

这是我要解析的 xml:

第一个 xml 消息被成功解析,但在第二个它引发异常。这是我的解析方法

在我的班级中,我定义了一个班级成员:

解析方法:

例外:

任何帮助,将不胜感激!

0 投票
1 回答
164 浏览

java - 使用 Aalto-xml 强制为每个 XML 创建新缓冲区

我正在尝试在异步环境中设置 Aalto-xml (Woodstox),但在弄清楚如何正确执行时遇到了麻烦!

我的流程是:

  1. 预分配“AsyncStreamReader”

    xmlInputFactory.createAsyncForByteArray();

  2. 从套接字接收 XML 流

  3. 使用数据馈送 streamReader

    streamReader.getInputFeeder().feedInput(bytes, 0, bufSize);

  4. 循环解析不同的 XML 标签:

    while (streamReader.hasNext()) {...}

  5. LastXMLEvent.END_ELEMENT被解析 --> 调用:

    streamReader.getInputFeeder().endOfInput();

  6. 执行后XMLEvent.END_DOCUMENT

    streamReader = xmlInputFactory.createAsyncForByteArray();

  7. AsyncXMLStreamReader.EVENT_INCOMPLETE--> 打破循环并等待更多数据提供给解析器。

尽管我知道这是错误的,但我还是这样做了,因为如果我不调用:'endOfInput()',那么当向阅读器提供新缓冲区时,它会抛出一个异常,就像我没有完成之前的 xml 一样。

让我失望的一点是,为了获得 END_DOCUMENT 你必须调用endOfInput()它来关闭缓冲区,这样你就不能用来自套接字的更多输入来提供它......我在这里陷入了一个循环!

如何修复我的流量?

这是带有解析器代码的要点: https ://gist.github.com/shvalb/ca9cd526aea31ccf280adf289e0991d7

0 投票
1 回答
85 浏览

maven-3 - Woodstox 解析器在 Eclipse 中的测试运行中工作正常,但从命令行失败

我的一个 JUnit 测试(在幕后)使用了 Woodstox 解析器。

当我在 Eclipse 中运行测试时,测试按预期成功。

但是在命令行上运行相同的测试,使用

导致测试失败并显示以下异常消息:

我看了一下 to-be-parsed InputStream。在这InputStream两种情况下 s 是相同的。

此外,在InputStream. 第 114 行在第 11 列结束。

如何调查导致不同行为的原因?