2015-07-08 2 views
1

Я обнаружил, что JDOM является хорошим выбором для создания XML-файлов, и в моем случае, мне нужно создать один с несколькими пространствами имен, как это:Определение нескольких пространств имен с JDOM

<?xml version="1.0" encoding="UTF-8"?> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:v="http://www.w3.org/2006/vcard/ns#"> 
    <v:VCard rdf:about="164"> 
    <v:fn /> 
    </v:VCard> 
</rdf:RDF> 

Но я не знаю, как определить второе пространство имен в корневом элементе. Что я получаю это:

<?xml version="1.0" encoding="UTF-8"?> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <v:VCard xmlns:v="http://www.w3.org/2006/vcard/ns#" rdf:about="164"> 
    <v:fn /> 
    </v:VCard> 
</rdf:RDF> 

Вот мой код:

Namespace rdf = Namespace.getNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#"); 
Namespace v = Namespace.getNamespace("v", "http://www.w3.org/2006/vcard/ns#"); 
Element rootElement = new Element("RDF", rdf); 
//rootElement.setAttribute("IdontWantoThis", "IdontWantoThis", v); 
Element mainElement = new Element("VCard", v); 
mainElement.setAttribute("about", "164", rdf); 
Element element = new Element("fn", v); 
mainElement.addContent(element); 
rootElement.addContent(mainElement); 
doc.addContent(rootElement); 

Если я использую комментируемую строку я получаю эту другую нежелательную вещь:

<?xml version="1.0" encoding="UTF-8"?> 
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:v="http://www.w3.org/2006/vcard/ns#" v:IdontWantoThis="IdontWantoThis"> 
    <v:VCard rdf:about="164"> 
    <v:fn /> 
    </v:VCard> 
</rdf:RDF> 

Я знаю, что есть некоторые специфичные для RDF библиотеки для java, но я просто хочу создать простой XML-файл, не хочу работать с моделями, онтологиями и т. д.

ответ

1

Вы можете объявить пространство имен на элемент, даже если элемент не нужно сразу ....

Element rootElement = new Element("RDF", rdf); 
rootElement.addNamespaceDeclaration(v); 

См addNamespaceDeclaration()

+0

Brilliant! Самое простое и быстрое решение, которое мне никогда не давалось. – toscanelli

Смежные вопросы