Jaxb: локальное пространство имен через атрибут xmlns вместо префикса элемента? - PullRequest
3 голосов
/ 21 октября 2011

Я генерирую XML с помощью Jaxb, который выглядит довольно хорошо. Вот фрагмент кода:

<?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?

Ответы [ 2 ]

2 голосов
/ 21 октября 2011

Вы можете установить пространство имен по умолчанию, используя аннотацию @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;

Для получения дополнительной информации

0 голосов
/ 21 октября 2011

Есть несколько способов решения этой проблемы. это может быть просто this , или вам может потребоваться полный контроль префиксов пространства имен. (Между прочим, этот второй xml не является «неправильным», он просто использует пространство имен по умолчанию. Однако будет неверным, если система требует определенного префикса для xml).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...