Java DOM, проблема с пространством имен / версией - PullRequest
0 голосов
/ 16 июня 2011

Я нахожусь в процессе создания XML как узла для программы RMI, которую я разрабатываю, но столкнулся с проблемой.Я могу создать XML, используя DOM, но я изо всех сил пытаюсь добавить пространство имен и версию в начало моего XML.Я пытался использовать setAttribute и setAttributeNS, но на данный момент потерял в том, что еще я могу сделать.

Java-код для создания элемента:

DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
            Document doc = docBuilder.newDocument();

            Node root = doc.createElement("Request");
            doc.appendChild(root);

//code ommited

Результат, который я получаю в настоящее время:

<Request>
    <Identification>
        <UserID>user</UserID>
        <Password>pass</Password>
    </Identification>
</Request>

В разделе запросов мне нужно, чтобы он выглядел следующим образом:

<Request xsi:noNamespaceSchemaLocation="URL" Version="1.0">

Любая помощь будет признательна, чтобы помочь решить эту проблему!

Спасибо

1 Ответ

1 голос
/ 16 июня 2011

Я думаю, вы хотите что-то вроде:

...
Element root = doc.createElement("Request");
root.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:noNamespaceSchemaLocation", "URL");
root.setAttribute("Version", "1.0");
doc.appendChild(root);
...

Определение root как Element дает вам методы .setAttribute *.

Это даст вам

<Request Version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="URL"/>

Я знаю, что это включает в себя немного больше, но атрибут xmlns: xsi необходим для определения пространства имен xsi.

...