Вопрос по xml, spring, jaxb, java, dom – Как добавить префикс пространства имен к объекту XML DOM?

10

Я пытаюсь создать документ XML, используя определенное пространство имен. Окончательный документ, который я пытаюсь сгенерировать, должен выглядеть так:

<m:documentObject xmlns:m="http://www.myschema.com">
    <sender>token</sender>
    <receiver>token</receiver>
    <payload>token</payload>
</m:documentObject>

Вот что у меня так далеко.

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)

По какой-то причине, когда я запускаю вышеописанное, схема выходит без префикса. Как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<documentObject xmlns="http://www.myschema.com">
    <sender>Xmlsender</sender>
    <receiver>Xmlreceiver</receiver>
    <payload>Xmlpayload</payload>
</documentObject>

Что мне нужно сделать, чтобы XML был в точности таким, как показано в первом примере XML с префиксом пространства имен и тегами с префиксом пространства имен?

Я пытаюсь создать строку XML, которая будет использоваться для веб-службы Spring-WS, которая ожидает объект JAXB в формате, показанном в первом примере.

Error: User Rate Limit Exceededjavax.xml.transform.TransformerError: User Rate Limit Exceeded Andrew Haritonkin

Ваш Ответ

1   ответ
13

Error: User Rate Limit ExceededsetPrefix.

Error: User Rate Limit Exceeded

document.createElementNS("http://www.myschema.com", "m:documentObject");

Error: User Rate Limit ExceedednullError: User Rate Limit ExceededcreateElementError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededstackoverflow.com/questions/11133754/…

Похожие вопросы