1 package sharin.doc.builder;
2
3 import java.util.List;
4
5 import sharin.util.StringUtils;
6
7 public class GenericXmlElem<E extends Elem> extends Elem {
8
9 public GenericXmlElem(String name, Object... nodes) {
10 super(name, nodes);
11 }
12
13 @SuppressWarnings("unchecked")
14 @Override
15 public E attr(String name, Object value) {
16 return (E) super.attr(name, value);
17 }
18
19 @SuppressWarnings("unchecked")
20 @Override
21 public E _(Object... nodes) {
22 return (E) super._(nodes);
23 }
24
25 @Override
26 public String toString() {
27 StringBuilder builder = new StringBuilder();
28 builder.append("<");
29 builder.append(StringUtils.escapeXml(getName()));
30
31 for (Attr attr : getAttrList()) {
32 builder.append(" ");
33 builder.append(StringUtils.escapeXml(attr.getName()));
34 builder.append("=\"");
35 builder.append(StringUtils.escapeXml(String
36 .valueOf(attr.getValue())));
37 builder.append('"');
38 }
39
40 List<Object> nodeList = getNodeList();
41
42 if (nodeList.size() > 0) {
43 builder.append(">");
44
45 for (Object node : nodeList) {
46 String s = node.toString();
47
48 if (!(node instanceof Elem)) {
49 s = StringUtils.escapeXml(s);
50 }
51
52 builder.append(s);
53 }
54
55 builder.append("</");
56 builder.append(StringUtils.escapeXml(getName()));
57 builder.append(">");
58
59 } else {
60 builder.append(" />");
61 }
62
63 return builder.toString();
64 }
65 }