RESTeasy/JAXB;如何避免将命名空间添加到 标记中的元素? (JAXB 中的列表<元素>)

2024-01-07

我将在这里尽我所能简化我的类和输出,但基本上我想要添加一个org.w3c.dom.Element(在本例中代表原子链接)到我返回的 JAXB 对象。 JAXB 类看起来像:

import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
import org.w3c.dom.Element;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "People", namespace = "main", propOrder = {
    "any",
    "persons"
})
public class People {
    @XmlAnyElement
    protected List<Element> any;
    @XmlElement(name = "person", namespace = "main")
    protected List<Person> persons;
    [...]
}

我正在使用我创建的模板创建元素,如下所示:

import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

public class ElementGen {
    public Element getTemplate() throws DOMException, SAXException, ParserConfigurationException {
        final SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        final Schema schema = sf.newSchema(new StreamSource(
                Thread.currentThread().getContextClassLoader().getResourceAsStream(ATOM_XSD)));
        final DocumentBuilderFactory docBuilder = DocumentBuilderFactory.newInstance();
        docBuilder.setSchema(schema);
        final Document doc = docBuilder.newDocumentBuilder().newDocument();
        linkTemplate = doc.createElementNS(ATOM_NAMESPACE, ATOM_LINK);
        return linkTemplate;
    }
}

(这实际上并不是类的样子,我只是想让它尽可能容易地编译一些东西来测试它,而不会有所有外部混乱)。

然后我使用克隆该模板linkTemplate.cloneNode(false);

现在这一切都有效,因为它返回 xml,但奇怪的是我返回的 xml 附加了额外的命名空间:

<atom:link xmlns:ns3="main" xmlns="" href="href" rel="rel"/>

如果我添加linkTemplate.setAttribute("xmlns", null);“xmlns:ns3”命名空间消失,我得到:

<atom:link xmlns="" href="href" rel="rel"/>

但似乎没有办法删除 xmlns=""。我是否以错误的方式创建了元素?或者也许还有其他问题?我很不知道为什么要添加这些,所以任何帮助/解释将不胜感激。

编辑:我相信它一定与我用于生成元素的文档的命名空间有关,但我不确定如何修复它。有没有办法在文档上设置(XML)targetNamespace?

编辑2:我不确定它是否为任何人添加了任何有用的东西,但通过更多的实验我发现linkTemplate.setAttribute("xmlns:" + anything, null);具有创建链接的效果xmlns:[anything]=""并删除否则会生成的任何其他内容。

编辑 3:用于生成 JAXB 对象的 xsd 的相关位是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0"
    xmlns="main"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:atom="http://www.w3.org/2005/Atom"
    targetNamespace="main"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">

<xs:complexType name="People">
    <xs:sequence>
        <xs:any namespace="##other" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="person" type="Person" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    [attributes]
</xs:complexType>
[other types etc.]

ATOM_LINK = "link" 的值是?如果是这样,它应该是“atom:link”,并删除 setPrefix() 调用。

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

RESTeasy/JAXB;如何避免将命名空间添加到 标记中的元素? (JAXB 中的列表<元素>) 的相关文章

随机推荐

  • SQL Server 更改计算列

    有谁知道如何更改计算列而不删除 SQL Server 中的列 我想停止使用该列作为计算列并开始直接在列中存储数据 但希望保留当前值 这可能吗 据我所知 但这是你可以做的事情 添加另一列到表中 使用计算列的值更新该列 然后删除计算列
  • 使用 Python 将 BMP/PNG/JPEG 转换为 SVG 文件

    我目前正在尝试使用 Python 将 BMP 文件转换为 SVG 文件 我正在尝试找到一个 Python 库 使我能够将 BMP PNG JPEG 文件转换为 SVG 文件 我已经尝试过使用 Potrace 但质量很糟糕 我需要相当高质量的
  • 不同文件夹中的文件具有相同的命名空间

    我正在尝试构建一个项目 以便自动生成的一些代码位于子文件夹中generated 但它与父目录中的文件具有相同的命名空间 例如 我有这个结构 它给了我错误PHP Fatal error Uncaught Error Class MyProje
  • 将文本字符串中的任何 url 替换为可单击的 php 链接

    假设我有一串文本 例如 text Hello world be sure to visit http whatever com today 我如何 可能使用正则表达式 插入链接的锚标记 将链接本身显示为链接文本 您可以使用正则表达式来执行此
  • 检测颜色并从图像中删除该颜色

    我的图像背景为浅紫色图像 字符为深蓝色 我的目标是从图像中识别文本 所以我试图从背景中删除浅紫色 以便我的图像没有噪音 但我找不到该图像的确切颜色代码 因为它在各处都有些不同 所以我无法遮盖图像 这是我的代码 import numpy as
  • 构建自引用元组

    在看到多年前的论坛上的一次从未解决的对话后 我想知道如何正确创建一个引用自身的元组 从技术上讲 这是一个非常糟糕的主意 因为元组应该是不可变的 一个不可变的对象怎么可能包含它自己呢 然而 这个问题不是关于最佳实践 而是关于 Python 中
  • setInterval 在 Chrome 上无法正常工作

    我有一个定制的幻灯片对象来执行名称在网站上指示的常见操作 一切正常 除非我在 Chrome 中切换选项卡并返回网站选项卡 当这种情况发生时 幻灯片就会变得疯狂并开始淡化图像 而不管setInterval给定的间隔 找不到与此相关的任何内容
  • 按字母顺序选择排序程序的问题

    我遇到了涉及选择排序概念的家庭作业问题 我们得到了一个框架代码 我们需要在其中完成bool compare and void selectionsort 功能 我已经完成了 然后 运行程序应该对给出的字符串进行排序main 按字母顺序排列
  • Windows cmd git bash:conda.sh没有这样的文件或目录(Windows行结尾,缺少斜杠)

    我正在 Windows 10 中工作 全新安装了 Anaconda 和 Git Bash 我决定将 cmd exe 设置为默认控制台程序以使用 git bash 而不是 minTTY 并且我认为我已经遇到了 Unix 风格字符与 Windo
  • 在matlab中使用FFT去除图像中的图案和噪声

    我使用 clown jpg 图像来消除其明显的图案 噪音 在对图像进行 FFT 之前所做的第一步是将其重新调整为 2 次幂的方形图像 即 256 x 256 在 matlab 中使用 FFT 和 fftshift 可以实现快速傅里叶变换 其
  • 使用 webpack 生成多个 html 文件

    我正在尝试在一个项目中做一些我不确定是否可能的事情 我的方式错误或误解了某些事情 我们正在使用 webpack 其想法是提供多个 html 文件 本地主机 8181 gt 提供index html本地主机 8181 example html
  • 为什么系统类方法无法访问?

    您好 我对 java 有点陌生 正在尝试从 txt 文件中提取字符串 BufferedReader br new BufferedReader new FileReader file txt try StringBuilder sb new
  • 将 OCaml 字符串转换为 format6

    以下代码无法编译 let x hello in Printf printf x 错误是 Error This expression has type string but an expression was expected of type
  • Swagger 不扫描位于不同 jar 文件中的实体类中的 ApiModel 和 ApiModelProperty 注释

    我有以下两个实体类 第一堂课是SampleApiEntity package my company rest import io swagger annotations ApiModel import io swagger annotati
  • Hive 动态分区和静态分区的主要区别

    Hive 中静态分区和动态分区的主要区别是什么 使用单独的插入意味着静态 而对分区表的单个插入意味着动态 还有其他优点吗 在静态分区中 我们需要在每个 LOAD 语句中指定分区列值 假设我们对表 t1 的列国家 地区进行分区 用户 ID 姓
  • 如何让背景逐渐变色?

    我正在尝试制作一个网页 其中图像的背景颜色逐渐改变颜色 我知道如何在 Javascript 中更改某些内容的背景颜色 但我不知道如何对其进行 动画 处理 不使用 Flash 您可以使用 CSS 过渡来获得这种效果 只需将 css 代码添加到
  • Expander扩展按钮wpf的移动位置

    我是 wpf 的新手 想要使用扩展器来允许用户显示和隐藏文本 我希望扩展器容器是窗口高度 800 的整个长度 我希望扩展器向右扩展 并使文本和扩展器按钮位于扩展器的中心 我知道如何使扩展器向右扩展以及如何使用文本块更改文本的方向 我不知道如
  • android httpclient 在第二次向服务器发出请求时挂起(连接超时)

    我正在努力解决以下问题 我的应用程序使用 HttpClient 向 http 服务器发出一系列请求 我使用 HttpPut 将数据发送到服务器 第一个请求进展顺利且快速 第二个请求挂起 40 秒 然后我捕获连接超时异常 我正在尝试重用 Ht
  • 使用 javascript 更新 2 个完全相同的图像源

    我使用名为 Cryptographer captchan fr 的 PHP 验证码网站 我需要在同一页面上使用 2 个验证码 但我遇到问题 它们确实生成了 但是当我单击刷新时 仅第一个刷新 刷新代码如下所示 document images
  • RESTeasy/JAXB;如何避免将命名空间添加到 标记中的元素? (JAXB 中的列表<元素>)

    我将在这里尽我所能简化我的类和输出 但基本上我想要添加一个org w3c dom Element 在本例中代表原子链接 到我返回的 JAXB 对象 JAXB 类看起来像 import javax xml bind annotation Xm