使用java创建xml时添加命名空间值

时间:2009-05-28 10:15:32

标签: xml namespaces

我必须创建类似于:

的xml
<xml version="1.0" encoding="UTF-8"?>
<tns:Message>
  <tns:Header>
    <tns:to>CCM</tns:to>
    <tns:from>CPM</tns:from>
    <tns:type>New</tns:type>
  </tns:Header>
</tns:Message>

来自我的java对象。

我正在尝试做这样的事情

                     DocumentBuilderFactory factory 
               = DocumentBuilderFactory.newInstance();
              factory.setNamespaceAware(true);
              DocumentBuilder builder = factory.newDocumentBuilder();
              DOMImplementation impl = builder.getDOMImplementation();
              Document doc = impl.createDocument(null,"tns:Message", null);

但是在最后一行它给了我错误

  

“NAMESPACE_ERR:尝试以某种方式创建或更改对象   这与名称空间不一致。“

但如果我传递“消息”而不是“tns:消息”,它可以正常工作。 由于tns是命名空间前缀,我需要使用它,我怎样才能使它成为可能。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/DOMImplementation.html#createDocumentType%28java.lang.String,%20java.lang.String,%20java.lang.String%29

查看为createDocument提供的第二种方法。

public Document createDocument(String namespaceURI,
                           String qualifiedName,
                           DocumentType doctype)
                    throws DOMException

您需要提供一个uri来唯一地将名称空间标识为第一个参数