问题标签 [javax.xml]

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 投票
2 回答
4335 浏览

java - JAXB 删除不必要的嵌套 XML 标记

目前我的程序有以下输出:

如您所见,同时拥有<container>and<elements>标签是没有用的。我想删除<elements>,所以输出看起来像:

下面列出了生成第一个输出的代码:

MyAdapter类,基于JAXB @XmlAdapter: Map -> List 适配器?(仅限马歇尔)

如何<elements>从输出中删除标签?


编辑:我找到了“肮脏”的方法 -@XmlRootElement(name = "")Containerclass设置。但是有什么“优雅”的方式吗?

0 投票
2 回答
538 浏览

java - 如何使用在 Java 中具有默认命名空间的 XPath 检索 XML 数据?

我遇到过堆栈溢出问题,但似乎没有一个解决方案可以为我解决问题。

我正在从 Yahoo 检索 XML 数据,它返回如下(为简洁起见被截断)。

我在让 XPath 检索任何元素时遇到问题,所以我编写了一个单元测试来尝试解决它,它看起来像:

我为映射命名空间而创建的 YahooNamespaceContext 类如下所示:

任何对具有更多 XML 命名空间经验的人或 Xpath 编译/评估的调试技巧的帮助将不胜感激。

0 投票
2 回答
351 浏览

java - 源到 ByteSource

我正在使用的 API 采用com.google.common.io.ByteSource. 我的 API 接受,javax.xml.transform.Source因为我正在做Schema验证以及调用其他 API。是否有一种干净的方法可以从 a 转换Source为 aByteSource和/或有一个更好的对象可以满足这两种方法的需求(即 ByteSource 和 Source)。

0 投票
2 回答
3686 浏览

java - 将 XML 文件 (InputStream) 传递给 XSLT 避免在 XSLT javax.xml 中使用 Document

我是 XML、XSLT 和 javax.xml 的新手

目前我的目标是使用 XSLT 1.0 版合并两个 XML 文件,一切正常。

但我觉得我的代码有一个限制,如果可能的话,我想摆脱它。

这些是我的资源:'file1.xml''file2.xml''merge.xslt'

这是我的合并方法:

这就是我在 XSLT 中传递 file2.xml 的方式

我想要实现的是,我想修改我的合并方法以传递 file1.xml 和 file2.xml。

我想以某种方式将此 InputStream file2 传递给 XSLT,从而消除从文件系统读取文件的限制。

如果可能,有人可以指导我以及如何实现它,我将非常感谢所有帮助。

谢谢你。

我尝试了一个小例子,在这里引用了XSLT Processing with Java : passing xml content in parameter 但它对我不起作用。

并将 XSLT 更新如下:

我得到的错误如下:

还使用:

我能否访问 XSLT 中的 file2.xml。

0 投票
2 回答
74 浏览

xml - 为什么拥有无效的 XSD 会很糟糕?

我的项目中有一组 XSD 文件。我尝试使用此问题中建议的代码来验证它们:

验证 XSD 本身

事实证明,我的一些 XSD 文件无效。

这并不妨碍我用这个无效的 XSD 文件验证一些 XML。那么在哪些情况下真正重要呢?

0 投票
2 回答
1379 浏览

java - Java Calendar.DAY_OF_YEAR 有时减一

我正在尝试根据用户的出生日期来获取用户的年龄。出生日期以 XML 中的字符串形式给出,并转换为Calendar如下形式:

然后我像这样计算用户的年龄:

我今天发现,如果今天是用户的生日(把派对帽收起来,这不是我的),年龄就太小了一岁。也就是说,如果用户出生于 2000 年,今天是她的生日,她应该是 14 岁,而不是 13 岁。但归根结底,Java 似乎有 DAY_OF_YEAR 错误:

是什么赋予了?

0 投票
1 回答
470 浏览

java - 使用 javax xml 绑定注释获取命名空间映射的所有 xml 前缀

是否可以使用 javax.xml.bind.* 注释将 xml 前缀→命名空间映射绑定到映射?

就像是:

在xml中

解组 xml 时,prefixToNamespaceMap会将 3 个前缀映射到它们相应的命名空间。

0 投票
1 回答
1665 浏览

java - 使用 builder.parse 方法和 Transformer 时在 xml 中保留换行符

目标是读取 xml 文件并写入新的 xml 文件,同时保留换行符。我们需要 Document 对象来执行其他 xml 任务。

说 source.xml 看起来像这样:

现在目标应该与代码元素中的换行符看起来相同。但相反,它忽略了换行符并将其变为一行。

对于写作,我使用以下方法:

Document xml 是使用 DocumentBuilder 中的 Parse(File) 方法获得的。大致如下:

builder.parse 似乎正在丢失 Code 元素的 CDATA 中的换行符。

我们如何保留换行符?我是 Java API 的新手。

0 投票
0 回答
837 浏览

java - TransformerFactory 使用命名空间处理 CDATA

看起来 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl 在使用命名空间时没有正确处理 CDATA。

考虑以下示例:

使用以下 XML

通过显式指定 TransformerFactory 实现来运行它

不能正确处理 CDATA 字段。但是,如果从转换代码和 XML 中删除命名空间,则文档将正确转换。

需要注意的是,以上使用 org.apache.xalan.processor.TransformerFactoryImpl 可以正常工作,但这不是一个选项......

如何使用 com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl 正确处理具有命名空间的 CDATA 字段?

0 投票
1 回答
3992 浏览

spring - 使用 JAXB + Spring RESTful Web 服务防止 XXE(外部实体处理)攻击

我知道我们可以通过在 JAXB 中将抽象类 XMLInputFactory 中的属性 IS_SUPPORTING_EXTERNAL_ENTITIES 设置为 false 来防止 XXE 攻击。

我也看过这个stackoverflow answer

我的问题是,

如何在 spring 应用程序加载时创建 XMLInputFactory 的实例并将此 IS_SUPPORTING_EXTERNAL_ENTITIES 属性设置为 false。并且那个特定的 XMLInputFactory 实例应该只用于所有使用 javax.xml.bind.annotation 包的类的所有 JAXB 转换。