[jdom-interest] Element.addAttribute() not replacing Attributes.
Robert R. Sanders
robert.sanders at ipov.net
Wed Mar 28 09:40:53 PST 2001
I had a few problems with Element.addAttribute() in that it didn't update/replace old attributes, I looked at the latest source from the CVS snapshot and the problem was still there. I took a few minutes and poked around and here is what I came up with (I just tested for my simple case, but it seemed to work). I simply call removeAttribute() if the attribute already exists. Maybe someone will verify this, and if it works check it in.
Robert r. Sanders
/**
* <p>
* This adds an attribute to this element. Any existing attribute with
* the same name and namespace URI is removed.
* </p>
*
* @param attribute <code>Attribute</code> to add
* @return this element modified
*/
public Element addAttribute(Attribute attribute) {
if (getAttribute(attribute.getName(), attribute.getNamespace()) != null) {
if (! removeAttribute(attribute.getName(), attribute.getNamespace() ) ) {
throw new IllegalAddException(this, attribute, "Duplicate attributes are not allowed, unable to remove old Attribute.");
}
}
if (attribute.getParent() != null) {
throw new IllegalAddException(this, attribute,
"The attribute already has an existing parent \"" +
attribute.getParent().getQualifiedName() + "\"");
}
// XXX Should verify attribute ns prefix doesn't collide with
// another attribute prefix or this element's prefix
if (attributes == null) {
attributes = new LinkedList();
}
attributes.add(attribute);
attribute.setParent(this);
return this;
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://jdom.org/pipermail/jdom-interest/attachments/20010328/7be2e63c/attachment.htm
More information about the jdom-interest
mailing list