добавление значения пространства имен при создании XML с Java - PullRequest
1 голос
/ 28 мая 2009

Я должен создать 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 Ответ

1 голос
/ 28 мая 2009

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 для уникальной идентификации пространства имен в качестве первого параметра

...