9
특정 네임 스페이스를 사용하여 XML 문서를 작성하려고합니다. 생성하려고하는 최종 문서는 다음과 같아야합니다.XML DOM 객체에 네임 스페이스 접두사를 어떻게 추가합니까?
<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이 정확히 어떻게해야합니까?
첫 번째 예제에 표시된 형식의 JAXB 객체를 예상하는 Spring-WS 웹 서비스에 사용할 XML 문자열을 만들려고합니다.
이 점에서 다르게 작동하는'javax.xml.transform.Transformer' 인터페이스의 구현이 다양하다는 점에 유의하십시오. 최근의 경험으로 볼 때 org.apache.xalan.transformer.TransformerImpl은 사용자가 가지고있는 것과 비슷한 결과를 생성합니다. com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl을 사용하면 예상대로 결과를 얻을 수 있지만 접두어는 사용하지 않습니다. –