当前位置: 首页 > 知识库问答 >
问题:

Jaxb XML封送处理向根元素添加前缀

谭伟
2023-03-14

我有以下问题,当我生成XML文件时,Jaxb给根元素的名称空间添加前缀,我不知道如何跳过它。

我有软件包信息.java文件

    @XmlSchema(namespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03", xmlns = {
        @XmlNs(namespaceURI = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03", prefix = "")
}, elementFormDefault = XmlNsForm.QUALIFIED)

我有根元素

    @XmlType(name = "Document",
        propOrder = {
                "cstmrCdtTrfInitn"
        })
@XmlRootElement(name = "Document")
public class Document {

        @XmlElement(name = "CstmrCdtTrfInitn", required = true)
        protected CustomerCreditTransferInitiationV03 cstmrCdtTrfInitn;
    }

结果我得到了

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Document xmlns:ns2="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <ns2:CstmrCdtTrfInitn>
        <ns2:GrpHdr/>
    </ns2:CstmrCdtTrfInitn>
</ns2:Document>

如果没有@XmlNs,它的工作方式也是一样的,将命名空间添加到@XmlRoolElement也没有帮助。它会有什么问题?

共有1个答案

拓拔稳
2023-03-14

不确定您试图实现什么,您的xml与您的代码完全匹配。

如果您根本不想要命名空间:

<Document>
 <CstmrCdtTrfInitn>
  <GrpHdr>ala</GrpHdr>
 </CstmrCdtTrfInitn>
</Document

只需将包信息更改为

@XmlSchema()

如果你想使用目标名称空间(所以没有前缀),比如

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
 <CstmrCdtTrfInitn>
  <GrpHdr>ala</GrpHdr>
 </CstmrCdtTrfInitn>
</Document>

然后

@XmlSchema(
    namespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03",
    elementFormDefault = XmlNsForm.QUALIFIED)

以上均使用标准Java7 jaxb进行了测试

 类似资料:
  • 我正在使用JAXB从XML生成java代码,它有一个枚举 我想为这个枚举添加几种颜色,比如红色和白色。我们不想更新xsd或生成的XML/Java代码,因为这些代码不属于我们,我们想要保持原样。 备选案文1.如果有一种读取XSD的方法,当它读取xs:simpleType name=“color”时,我可以为枚举添加颜色,这样生成的java枚举就具有所有需要的值 备选案文2.如果我可以编写一个适配器,

  • 我需要填充一个json文件,现在我有如下内容: 我需要添加另一个“元素”。我的第一步是使用,现在我需要添加新元素。我想我必须使用添加另一个元素,我尝试了以下方法: 但是当我尝试做时,我得到了错误"对象没有方法推送",我认为我做了一些非常错误的事情,因为我没有告诉任何地方的"元素"。 我该怎么做? 编辑:对不起,我脑子里有很多困惑。 我认为从,但我首先得到了我在JSON中输入的内容。 用数组代替对象

  • 我有个文件名测试。json 我读了这个文件,我想得到这个 我要阅读和构建的代码 从JSON的那句话中,我得到了 com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)接受格式错误的JSON 我的绳子坏了? 我试过了 我知道这不是JSON数组。

  • 有人帮忙吗? 提前道谢。

  • 我不确定以下问题是否适用于jaxb,但我还是会问。 在某个项目中,我们使用带有定义模式的jaxb来创建xml文件的下一个结构。 我们还使用jaxb的自动类生成来创建类:aaa和bbb,其中aaa生成为@XmlRootElement。 我们现在希望在新项目中使用相同的模式,该模式也将与以前的项目兼容。我想做的是使用相同的jaxb生成的类,而不需要对模式进行任何更改,以便仅将单个bbb对象封送到xml

  • 问题内容: 我有办法 在内部,我想调用另一个方法并将其传递,但是我想向其他对象添加新元素(描述)。 如何在Java中做到这一点?代码是什么样的? 问题答案: 只是一个数组。因此: 您可能需要弄混的通用类型。 您可以更快但更冗长: