📄 defaultelement.java
字号:
if (contentShadow instanceof List) {
List list = (List) contentShadow;
return list.iterator();
} else {
if (contentShadow != null) {
return createSingleIterator(contentShadow);
} else {
return EMPTY_ITERATOR;
}
}
}
public List attributes() {
return new ContentListFacade(this, attributeList());
}
public void setAttributes(List attributes) {
if (attributes instanceof ContentListFacade) {
attributes = ((ContentListFacade) attributes).getBackingList();
}
this.attributes = attributes;
}
public Iterator attributeIterator() {
final Object attributesShadow = this.attributes;
if (attributesShadow instanceof List) {
List list = (List) attributesShadow;
return list.iterator();
} else if (attributesShadow != null) {
return createSingleIterator(attributesShadow);
} else {
return EMPTY_ITERATOR;
}
}
public Attribute attribute(int index) {
final Object attributesShadow = this.attributes;
if (attributesShadow instanceof List) {
List list = (List) attributesShadow;
return (Attribute) list.get(index);
} else if ((attributesShadow != null) && (index == 0)) {
return (Attribute) attributesShadow;
} else {
return null;
}
}
public int attributeCount() {
final Object attributesShadow = this.attributes;
if (attributesShadow instanceof List) {
List list = (List) attributesShadow;
return list.size();
} else {
return (attributesShadow != null) ? 1 : 0;
}
}
public Attribute attribute(String name) {
final Object attributesShadow = this.attributes;
if (attributesShadow instanceof List) {
List list = (List) attributesShadow;
int size = list.size();
for (int i = 0; i < size; i++) {
Attribute attribute = (Attribute) list.get(i);
if (name.equals(attribute.getName())) {
return attribute;
}
}
} else if (attributesShadow != null) {
Attribute attribute = (Attribute) attributesShadow;
if (name.equals(attribute.getName())) {
return attribute;
}
}
return null;
}
public Attribute attribute(QName qName) {
final Object attributesShadow = this.attributes;
if (attributesShadow instanceof List) {
List list = (List) attributesShadow;
int size = list.size();
for (int i = 0; i < size; i++) {
Attribute attribute = (Attribute) list.get(i);
if (qName.equals(attribute.getQName())) {
return attribute;
}
}
} else if (attributesShadow != null) {
Attribute attribute = (Attribute) attributesShadow;
if (qName.equals(attribute.getQName())) {
return attribute;
}
}
return null;
}
public Attribute attribute(String name, Namespace namespace) {
return attribute(getDocumentFactory().createQName(name, namespace));
}
public void add(Attribute attribute) {
if (attribute.getParent() != null) {
String message = "The Attribute already has an existing parent \""
+ attribute.getParent().getQualifiedName() + "\"";
throw new IllegalAddException(this, attribute, message);
}
if (attribute.getValue() == null) {
// try remove a previous attribute with the same
// name since adding an attribute with a null value
// is equivalent to removing it.
Attribute oldAttribute = attribute(attribute.getQName());
if (oldAttribute != null) {
remove(oldAttribute);
}
} else {
if (attributes == null) {
attributes = attribute;
} else {
attributeList().add(attribute);
}
childAdded(attribute);
}
}
public boolean remove(Attribute attribute) {
boolean answer = false;
final Object attributesShadow = this.attributes;
if (attributesShadow instanceof List) {
List list = (List) attributesShadow;
answer = list.remove(attribute);
if (!answer) {
// we may have a copy of the attribute
Attribute copy = attribute(attribute.getQName());
if (copy != null) {
list.remove(copy);
answer = true;
}
}
} else if (attributesShadow != null) {
if (attribute.equals(attributesShadow)) {
this.attributes = null;
answer = true;
} else {
// we may have a copy of the attribute
Attribute other = (Attribute) attributesShadow;
if (attribute.getQName().equals(other.getQName())) {
attributes = null;
answer = true;
}
}
}
if (answer) {
childRemoved(attribute);
}
return answer;
}
// Implementation methods
// -------------------------------------------------------------------------
protected void addNewNode(Node node) {
final Object contentShadow = content;
if (contentShadow == null) {
this.content = node;
} else {
if (contentShadow instanceof List) {
List list = (List) contentShadow;
list.add(node);
} else {
List list = createContentList();
list.add(contentShadow);
list.add(node);
this.content = list;
}
}
childAdded(node);
}
protected boolean removeNode(Node node) {
boolean answer = false;
final Object contentShadow = content;
if (contentShadow != null) {
if (contentShadow == node) {
this.content = null;
answer = true;
} else if (contentShadow instanceof List) {
List list = (List) contentShadow;
answer = list.remove(node);
}
}
if (answer) {
childRemoved(node);
}
return answer;
}
protected List contentList() {
final Object contentShadow = content;
if (contentShadow instanceof List) {
return (List) contentShadow;
} else {
List list = createContentList();
if (contentShadow != null) {
list.add(contentShadow);
}
this.content = list;
return list;
}
}
protected List attributeList() {
final Object attributesShadow = this.attributes;
if (attributesShadow instanceof List) {
return (List) attributesShadow;
} else if (attributesShadow != null) {
List list = createAttributeList();
list.add(attributesShadow);
this.attributes = list;
return list;
} else {
List list = createAttributeList();
this.attributes = list;
return list;
}
}
protected List attributeList(int size) {
final Object attributesShadow = this.attributes;
if (attributesShadow instanceof List) {
return (List) attributesShadow;
} else if (attributesShadow != null) {
List list = createAttributeList(size);
list.add(attributesShadow);
this.attributes = list;
return list;
} else {
List list = createAttributeList(size);
this.attributes = list;
return list;
}
}
protected void setAttributeList(List attributeList) {
this.attributes = attributeList;
}
protected DocumentFactory getDocumentFactory() {
DocumentFactory factory = qname.getDocumentFactory();
return (factory != null) ? factory : DOCUMENT_FACTORY;
}
}
/*
* Redistribution and use of this software and associated documentation
* ("Software"), with or without modification, are permitted provided that the
* following conditions are met:
*
* 1. Redistributions of source code must retain copyright statements and
* notices. Redistributions must also contain a copy of this document.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* 3. The name "DOM4J" must not be used to endorse or promote products derived
* from this Software without prior written permission of MetaStuff, Ltd. For
* written permission, please contact dom4j-info@metastuff.com.
*
* 4. Products derived from this Software may not be called "DOM4J" nor may
* "DOM4J" appear in their names without prior written permission of MetaStuff,
* Ltd. DOM4J is a registered trademark of MetaStuff, Ltd.
*
* 5. Due credit should be given to the DOM4J Project - http://www.dom4j.org
*
* THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL METASTUFF, LTD. OR ITS CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*
* Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -