Kennen Sie eine JAXB-Einstellung, um zu verhindern, dass im resultierenden XML Standalone = "yes" generiert wird?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
xml
xsd
jaxb
xml-binding
Johan Pelgrim
quelle
quelle
Antworten:
Diese Liegenschaft:
... kann verwendet werden, um keine zu haben:
Ich würde diese bewährte Methode jedoch nicht in Betracht ziehen.
quelle
in JAXB ist das Teil von JDK1.6
quelle
standalone
Attribut in der XML-Deklaration entfernen .Sie können entweder verwenden
oder
Um die Standard-XML-Deklaration zu deaktivieren und anschließend Ihre benutzerdefinierte XML-Deklaration hinzuzufügen,
durch
auf die generierte XML, wodurch die eigenständige Eigenschaft "yes" vermieden wird .
quelle
Nur wenn noch jemand mit diesem Problem zu kämpfen hat, können Sie die Verwendung in Betracht ziehen
Um die gesamte XML-Deklaration zu entfernen, schreiben Sie einfach Ihre eigene
String
am Anfang Ihres Ausgabestreams / Ihrer Ausgabemethodequelle
Wenn Sie ein Dokument abhängig machen
DOCTYPE
(z. B. benannte Entitäten verwenden),standalone="yes"
wird es nicht mehr eigenständig und ist daher in der XML-Deklaration nicht zulässig.Standalone-XML kann jedoch überall verwendet werden, während Nicht-Standalone für XML-Parser, die keine externen Dateien laden, problematisch ist.
Ich sehe nicht ein, wie diese Deklaration ein Problem sein könnte, außer für die Interoperabilität mit Software, die XML nicht unterstützt, aber eine schreckliche Regex-Suppe.
quelle
DOCTYPE
?Dies funktionierte bei mir mit JDK1.7. standalone = "no" kann entfernt werden, um nur den Rest des XML-Teils zu erhalten
quelle
Wenn Sie nur das Standardpaket javax.xml verwenden, können Sie die Option JAXB_FRAGMENT des Marshallers auf 'true' setzen (dies lässt die Standardanweisung für die XML-Verarbeitung weg) und die Methode writeProcessingInstruction des XMLStreamWriter verwenden, um Ihre eigenen einzufügen:
quelle
Sie können verwenden: marshaller.setProperty ("jaxb.fragment", Boolean.TRUE);
Es funktioniert für mich unter Java 8
quelle
Ich habe keinen ausreichend hohen "Ruf", um das "Privileg" zu haben, Kommentare abzugeben. ;-);
@Debasis, beachten Sie, dass die von Ihnen angegebene Eigenschaft:
sollte sein:
Wenn ich die "interne" Eigenschaft wie Sie verwende, erhalte ich eine javax.xml.bind.PropertyException
quelle
Wenn Sie eine Eigenschaftsausnahme erhalten, fügen Sie die folgende Konfiguration hinzu:
quelle
Ich verwende Java 1.8 und JAXB 2.3.1
Stellen Sie zunächst sicher, dass Sie Java 1.8 in pom.xml verwenden
Dann habe ich im Quellcode verwendet: (der Schlüssel war der interne Teil)
quelle
Probier's einfach
quelle
Wenn Sie haben
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
aber will das:
<?xml version="1.0" encoding="UTF-8"?>
Mach einfach:
quelle