[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