Comment ajouter un préfixe d'espace de noms à un objet DOM XML?
Je suis en train de construire un document XML à l'aide d'un espace de noms spécifique. Le document final je suis en train de générer des est censé ressembler à ceci:
<m:documentObject xmlns:m="http://www.myschema.com">
<sender>token</sender>
<receiver>token</receiver>
<payload>token</payload>
</m:documentObject>
Voici ce que j'ai jusqu'à présent.
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element requestElement = document.createElementNS("http://www.myschema.com", "documentObject");
document.appendChild(requestElement);
Element sender = document.createElement("sender");
requestElement.appendChild(sender);
Text senderText = document.createTextNode("Xmlsender");
sender.appendChild(senderText);
Element receiver = document.createElement("receiver");
requestElement.appendChild(receiver);
Text receiverText = document.createTextNode("Xmlreceiver");
receiver.appendChild(receiverText);
Element payload = document.createElement("payload");
requestElement.appendChild(payload);
Text payloadText = document.createTextNode("Xmlpayload");
payload.appendChild(payloadText);
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(requestElement);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
transformer.transform(source, result);
String xmlString = sw.toString();
System.out.println(xmlString)
Pour quelque raison que quand je lance le au-dessus du schéma sort sans le préfixe. Comme indiqué ci-dessous:
<?xml version="1.0" encoding="utf-8"?>
<documentObject xmlns="http://www.myschema.com">
<sender>Xmlsender</sender>
<receiver>Xmlreceiver</receiver>
<payload>Xmlpayload</payload>
</documentObject>
Que dois-je faire pour que XML est exactement comme indiqué dans le premier exemple de XML avec le préfixe d'espace de noms et les étiquettes d'avoir le préfixe d'espace de noms?
Je suis en train de créer une chaîne de caractères XML qui sera utilisé pour un Printemps-WS webservice qui s'attend à un JAXB objet qui est dans le format indiqué dans le premier exemple.
source d'informationauteur ziggy
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
setPrefix
.Mais il est préférable de créer l'élément racine comme ceci:
Note également que le passage
null
àcreateElement
est un moyen de le forcer à un espace de noms null. Dans votre exemple, ce ne serait toutefois pas travailler en raison de votre élément de document efficacement les forces d'un espace de noms par défaut par la combinaison d'un URI d'espace de noms avec pas de préfixe.