[jdom-interest] Setting namespace declarations outside the XML document?

Geoff Rimmer geoff.rimmer at sillyfish.com
Wed Mar 24 02:33:31 PST 2004


I have successfully used JDOM to parse XML files like this:

    <sf:page
        xmlns="http://www.w3.org/1999/xhtml"
        xmlns:sf="http://www.sillyfish.com/2004/03/page"
        xmlns:c="http://java.sun.com/jsp/jstl/core">
      <sf:image ref="header"/>
      <c:forEach var="person" items="${people}">
        <p>${person.firstName} ${person.lastName}</p>
      </c:forEach>
    </sf:page>

What I would like to do is move the namespace declarations from the XML file 
into the Java code that calls the parser.

In other words, write the XML file like this:

    <sf:page>
      <sf:image ref="header"/>
      <c:forEach var="person" items="${people}">
        <p>${person.firstName} ${person.lastName}</p>
      </c:forEach>
    </sf:page>

and then write something like this in Java:

    SAXBuilder builder = new SAXBuilder(false);
    builder.addNamespace("", "http://www.w3.org/1999/xhtml");
    builder.addNamespace("sf", "http://www.sillyfish.com/2004/03/page");
    builder.addNamespace("c", "http://java.sun.com/jsp/jstl/core");
    Document doc = builder.build(new FileInputStream(.....));

Of course the problem is that there is no SAXBuilder.addNamespace() method.

But is there some other way I can specify the namespaces without having to 
write them into the XML file?  I would obviously prefer a JDOM solution, but 
if this is not possible, a "Xerces 2"-specific solution would be OK.

Many thanks in advance.

Geoff Rimmer
geoff.rimmer at sillyfish.com



More information about the jdom-interest mailing list