public interface XmlBuilder
{
XmlBuilder open
(String tagName
);
XmlBuilder close
();
XmlBuilder setAttribute
(String name,
String value
);
XmlBuilder addText
(String text
);
XmlBuilder addTaggedText
(String tagName,
String text
);
} protected static void addContent (XmlBuilder xb) {
xb.open("channel")
.addTaggedText("title", "Foobar RSS feed")
.addTaggedText("description", "Foobar feed description")
.open("item")
.addTaggedText("title", "Item 1")
.addTaggedText("link", "http://.....")
.close()
.open("item")
.addTaggedText("title", "Item 2")
.addTaggedText("link", "http://.....")
.close()
.close();
}
import org.
jdom.
Element;
import org.
jdom.
Document;
public class JDomXmlBuilder
implements XmlBuilder
{
Document m_document;
Element m_current;
public JDomXmlBuilder
(String rootName
) {
m_current =
new Element(rootName
);
m_document =
new Document(m_current
);
}
public Document getDocument
() {
return m_document;
}
public XmlBuilder open
(String tagName
) {
Element element =
new Element(tagName
);
m_current.
addContent(element
);
m_current = element;
return this;
}
public XmlBuilder close
() {
m_current =
(Element) m_current.
getParent();
return this;
}
public XmlBuilder setAttribute
(String name,
String value
) {
m_current.
setAttribute(name, value
);
return this;
}
public XmlBuilder addText
(String text
) {
m_current.
addContent(text
);
return this;
}
public XmlBuilder addTaggedText
(String tagName,
String text
) {
Element element =
new Element(tagName
);
element.
addContent(text
);
m_current.
addContent(element
);
return this;
}
} import org.
jdom.
Element;
import org.
jdom.
Document;
import org.
jdom.
output.
XMLOutputter;
public class Test
{
public static void main
(String[] args
) throws Exception {
JDomXmlBuilder xb =
new JDomXmlBuilder
("rss");
xb.
setAttribute("version",
"2.0");
addContent
(xb
);
XMLOutputter out =
new XMLOutputter
();
out.
output(xb.
getDocument(),
System.
out);
}
protected static void addContent
(XmlBuilder xb
) {
xb.
open("channel")
.
addTaggedText("title",
"Foobar RSS feed")
.
addTaggedText("description",
"Foobar feed description")
.
open("item")
.
addTaggedText("title",
"Item 1")
.
addTaggedText("link",
"http://.....")
.
close()
.
open("item")
.
addTaggedText("title",
"Item 2")
.
addTaggedText("link",
"http://.....")
.
close()
.
close();
}
} <?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>Foobar RSS feed</title>
<description>Foobar feed description</description>
<item>
<title>Item 1</title>
<link>http://.....</link>
</item>
<item>
<title>Item 2</title>
<link>http://.....</link>
</item>
</channel>
</rss>