问题标签 [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.
java - JAXB 删除不必要的嵌套 XML 标记
目前我的程序有以下输出:
如您所见,同时拥有<container>
and<elements>
标签是没有用的。我想删除<elements>
,所以输出看起来像:
下面列出了生成第一个输出的代码:
和MyAdapter
类,基于JAXB @XmlAdapter: Map -> List 适配器?(仅限马歇尔):
如何<elements>
从输出中删除标签?
编辑:我找到了“肮脏”的方法 -@XmlRootElement(name = "")
为Container
class设置。但是有什么“优雅”的方式吗?
java - 如何使用在 Java 中具有默认命名空间的 XPath 检索 XML 数据?
我遇到过堆栈溢出问题,但似乎没有一个解决方案可以为我解决问题。
我正在从 Yahoo 检索 XML 数据,它返回如下(为简洁起见被截断)。
我在让 XPath 检索任何元素时遇到问题,所以我编写了一个单元测试来尝试解决它,它看起来像:
我为映射命名空间而创建的 YahooNamespaceContext 类如下所示:
任何对具有更多 XML 命名空间经验的人或 Xpath 编译/评估的调试技巧的帮助将不胜感激。
java - 源到 ByteSource
我正在使用的 API 采用com.google.common.io.ByteSource
. 我的 API 接受,javax.xml.transform.Source
因为我正在做Schema
验证以及调用其他 API。是否有一种干净的方法可以从 a 转换Source
为 aByteSource
和/或有一个更好的对象可以满足这两种方法的需求(即 ByteSource 和 Source)。
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。
xml - 为什么拥有无效的 XSD 会很糟糕?
我的项目中有一组 XSD 文件。我尝试使用此问题中建议的代码来验证它们:
事实证明,我的一些 XSD 文件无效。
这并不妨碍我用这个无效的 XSD 文件验证一些 XML。那么在哪些情况下真正重要呢?
java - Java Calendar.DAY_OF_YEAR 有时减一
我正在尝试根据用户的出生日期来获取用户的年龄。出生日期以 XML 中的字符串形式给出,并转换为Calendar
如下形式:
然后我像这样计算用户的年龄:
我今天发现,如果今天是用户的生日(把派对帽收起来,这不是我的),年龄就太小了一岁。也就是说,如果用户出生于 2000 年,今天是她的生日,她应该是 14 岁,而不是 13 岁。但归根结底,Java 似乎有 DAY_OF_YEAR 错误:
是什么赋予了?
java - 使用 javax xml 绑定注释获取命名空间映射的所有 xml 前缀
是否可以使用 javax.xml.bind.* 注释将 xml 前缀→命名空间映射绑定到映射?
就像是:
在xml中
解组 xml 时,prefixToNamespaceMap
会将 3 个前缀映射到它们相应的命名空间。
java - 使用 builder.parse 方法和 Transformer 时在 xml 中保留换行符
目标是读取 xml 文件并写入新的 xml 文件,同时保留换行符。我们需要 Document 对象来执行其他 xml 任务。
说 source.xml 看起来像这样:
现在目标应该与代码元素中的换行符看起来相同。但相反,它忽略了换行符并将其变为一行。
对于写作,我使用以下方法:
Document xml 是使用 DocumentBuilder 中的 Parse(File) 方法获得的。大致如下:
builder.parse 似乎正在丢失 Code 元素的 CDATA 中的换行符。
我们如何保留换行符?我是 Java API 的新手。
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 字段?
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 转换。