gpt4 book ai didi

java - Jaxb:通过 xmlns 属性而不是元素前缀进行本地命名空间?

转载 作者:数据小太阳 更新时间:2023-10-29 02:37:13 30 4
gpt4 key购买 nike

我正在使用 Jaxb 生成一些看起来不错的 XML。这是一个片段:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ns2:oval_system_characteristics xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5 oval-system-characteristics-schema.xsd http://oval.mitre.org/XMLSchema/oval-common-5 oval-common-schema.xsd http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#esx esx-system-characteristics-schema.xsd"
xmlns:ns2="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5" xmlns="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:ns3="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#esx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

...

<ns3:visdkmanagedobject_item id="1">
<ns3:property>isolation.tools.diskWiper.disable</ns3:property>
<ns3:value datatype="boolean">true</ns3:value>
</ns3:visdkmanagedobject_item>

这是符合标准的 XML。不幸的是,我受限于下游系统的限制,它只接受这种格式的 XML:

<visdkmanagedobject_item id="1" xmlns="http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#esx">
<property>isolation.tools.diskWiper.disable</property>
<value datatype="boolean">true</value>
</visdkmanagedobject_item>

其中某些元素通过 xmlns 属性命名空间。现在的问题是,如何让 Jaxb 停止(做正确的事情)使用前缀命名空间并开始使用 xmlns 属性命名元素?

最佳答案

您可以通过在包级别利用 @XmlSchema 注释来设置默认命名空间。这是通过利用 package-info 类(下面的示例)来完成的:

com.example.package-info

@XmlSchema(
namespace = "http://oval.mitre.org/XMLSchema/oval-system-characteristics-5#esx",
elementFormDefault = XmlNsForm.QUALIFIED)
package com.example;

import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

了解更多信息

关于java - Jaxb:通过 xmlns 属性而不是元素前缀进行本地命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7843511/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com