Xml Builder
7
Implementation-independent XML builder.
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);
}
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();
}
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.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();
}
}
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>
<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>






There are currently no comments for this snippet.