Создание элемента JDOM - PullRequest
       19

Создание элемента JDOM

1 голос
/ 10 декабря 2011

Я новичок в JDOM, и у меня возникают проблемы при создании документа.Проблема в том, что я хочу иметь возможность добавлять элементы, которые НЕ имеют атрибута "xmlns".Я использую JDOM 1.1

Все примеры, которые я нашел, показывают вывод без"xmlns".Вот простой фрагмент кода вместе с его выводом:

      Namespace jwNS = Namespace.getNamespace("http://www.javaworld.com");
      Element myElement = new Element("article", jwNS);
      Document doc = new Document(myElement);
      myElement.addContent(new Element("title").setText("Blah, blah, blah"));

// serialize with two space indents and extra line breaks
try {
  //XMLOutputter serializer = new XMLOutputter("  ", true);
  XMLOutputter serializer = new XMLOutputter(Format.getPrettyFormat());
  serializer.output(doc, System.out);
}
catch (IOException e) {
  System.err.println(e);
}

Вывод:

<?xml version="1.0" encoding="UTF-8"?>
<article xmlns="http://www.javaworld.com">
  <title xmlns="">Blah, blah, blah</title>
</article>

Мне нужно просто иметь

<?xml version="1.0" encoding="UTF-8"?>
<article xmlns="http://www.javaworld.com">
  <title>Blah, blah, blah</title>
</article>

Может кто-нибудьскажите что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 10 декабря 2011

Учитывая ваш желаемый пример:

<?xml version="1.0" encoding="UTF-8"?>
<article xmlns="http://www.javaworld.com">
  <title>Blah, blah, blah</title>
</article>

Это означает, что все дочерние элементы <article> имеют то же пространство имен, что и <article>, то есть пространства имен наследуются от родителей к детям.Это означает, что вам нужно указать jwNS для всех ваших дочерних элементов, то есть

myElement.addContent(new Element("title", jwNS ).setText("Blah, blah, blah"));

При рендеринге вывода XML JDOM должен затем пропустить явное пространство имен из <title>, поскольку оно наследует его от <article>.

Используя просто new Element("title"), вы говорите, что не хотите пространства имен в <title>, и поэтому JDOm должен добавить явный атрибут xnmns="", чтобы переопределить наследованиеjwNS пространство имен от <article> родителя.

0 голосов
/ 10 декабря 2011

Попробуйте создать свой элемент, используя:

Element myElement = new Element("article");

вместо

Element myElement = new Element("article", jwNS);
...