1 7 8 package org.dom4j.tree; 9 10 import java.io.IOException ; 11 import java.io.Writer ; 12 13 import org.dom4j.Attribute; 14 import org.dom4j.Element; 15 import org.dom4j.Namespace; 16 import org.dom4j.Node; 17 import org.dom4j.Visitor; 18 19 28 public abstract class AbstractAttribute extends AbstractNode implements 29 Attribute { 30 public short getNodeType() { 31 return ATTRIBUTE_NODE; 32 } 33 34 public void setNamespace(Namespace namespace) { 35 String msg = "This Attribute is read only and cannot be changed"; 36 throw new UnsupportedOperationException (msg); 37 } 38 39 public String getText() { 40 return getValue(); 41 } 42 43 public void setText(String text) { 44 setValue(text); 45 } 46 47 public void setValue(String value) { 48 String msg = "This Attribute is read only and cannot be changed"; 49 throw new UnsupportedOperationException (msg); 50 } 51 52 public Object getData() { 53 return getValue(); 54 } 55 56 public void setData(Object data) { 57 setValue((data == null) ? null : data.toString()); 58 } 59 60 public String toString() { 61 return super.toString() + " [Attribute: name " + getQualifiedName() 62 + " value \"" + getValue() + "\"]"; 63 } 64 65 public String asXML() { 66 return getQualifiedName() + "=\"" + getValue() + "\""; 67 } 68 69 public void write(Writer writer) throws IOException { 70 writer.write(getQualifiedName()); 71 writer.write("=\""); 72 writer.write(getValue()); 73 writer.write("\""); 74 } 75 76 public void accept(Visitor visitor) { 77 visitor.visit(this); 78 } 79 80 public Namespace getNamespace() { 82 return getQName().getNamespace(); 83 } 84 85 public String getName() { 86 return getQName().getName(); 87 } 88 89 public String getNamespacePrefix() { 90 return getQName().getNamespacePrefix(); 91 } 92 93 public String getNamespaceURI() { 94 return getQName().getNamespaceURI(); 95 } 96 97 public String getQualifiedName() { 98 return getQName().getQualifiedName(); 99 } 100 101 public String getPath(Element context) { 102 StringBuffer result = new StringBuffer (); 103 104 Element parent = getParent(); 105 106 if ((parent != null) && (parent != context)) { 107 result.append(parent.getPath(context)); 108 result.append("/"); 109 } 110 111 result.append("@"); 112 113 String uri = getNamespaceURI(); 114 String prefix = getNamespacePrefix(); 115 116 if ((uri == null) || (uri.length() == 0) || (prefix == null) 117 || (prefix.length() == 0)) { 118 result.append(getName()); 119 } else { 120 result.append(getQualifiedName()); 121 } 122 123 return result.toString(); 124 } 125 126 public String getUniquePath(Element context) { 127 StringBuffer result = new StringBuffer (); 128 129 Element parent = getParent(); 130 131 if ((parent != null) && (parent != context)) { 132 result.append(parent.getUniquePath(context)); 133 result.append("/"); 134 } 135 136 result.append("@"); 137 138 String uri = getNamespaceURI(); 139 String prefix = getNamespacePrefix(); 140 141 if ((uri == null) || (uri.length() == 0) || (prefix == null) 142 || (prefix.length() == 0)) { 143 result.append(getName()); 144 } else { 145 result.append(getQualifiedName()); 146 } 147 148 return result.toString(); 149 } 150 151 protected Node createXPathResult(Element parent) { 152 return new DefaultAttribute(parent, getQName(), getValue()); 153 } 154 } 155 156 192 | Popular Tags |