xmlelement.java
来自「Online Map for Mobile」· Java 代码 · 共 147 行
JAVA
147 行
import java.util.*;
public class XMLElement {
private XMLElement next;
private XMLElement prev;
private String name;
private Hashtable siblings;
private Hashtable attributes;
private Vector siblingsList;
private Vector attributesList;
private String value;
private int counter;
XMLElement(String name) {
this.name = name;
}
public String getName() {
return name;
}
final void addSibling(XMLElement elem) {
if (siblings == null) {
siblings = new Hashtable();
siblingsList = new Vector();
}
XMLElement prev = (XMLElement)siblings.get(elem.name);
if (prev != null) {
elem.next = null;
elem.prev = prev.prev;
elem.prev.next = elem;
prev.prev = elem;
prev.counter += 1;
} else {
siblings.put(elem.name, elem);
elem.prev = elem;
elem.counter = 1;
}
siblingsList.addElement(elem);
}
final void addAttribute(String name, String value) {
XMLAttribute attr = new XMLAttribute(name, value);
if (attributes == null) {
attributes = new Hashtable();
attributesList = new Vector();
}
attributesList.addElement(attr);
attributes.put(name, attr);
}
final Vector getSiblings() {
return siblingsList;
}
final Vector getAttributes() {
return attributesList;
}
final XMLElement getSibling(String name) {
if (siblings != null) {
XMLElement sibling = (XMLElement)siblings.get(name);
if (sibling != null) {
return sibling;
}
}
return null;
}
final XMLElement getNextSibling() {
return next;
}
final int getCounter() {
return counter;
}
final XMLAttribute getAttribute(String name) {
return attributes != null ? (XMLAttribute)attributes.get(name) : null;
}
final void setValue(String value) {
this.value = value;
}
final String getValue() {
return value;
}
final int getIntValue() {
if (value == null) {
throw new XMLException("Value not set");
}
try {
return Integer.parseInt(value);
} catch (NumberFormatException x) {
throw new XMLException("Element value '" + value + "' is not an integer constant");
}
}
public Vector search(String pattern) {
Vector result = new Vector();
pattern = pattern.toUpperCase();
if (siblingsList != null) {
for (int i = siblingsList.size(); --i >= 0;) {
XMLElement elem = (XMLElement)siblingsList.elementAt(i);
if (elem.searchSiblings(pattern)) {
result.addElement(elem);
}
}
}
return result;
}
private boolean searchSiblings(String pattern) {
if (name.toUpperCase().equals(pattern)) {
return true;
}
if (value != null) {
if (value.toUpperCase().indexOf(pattern) >= 0) {
return true;
}
}
if (attributesList != null) {
for (int i = attributesList.size(); --i >= 0;) {
XMLAttribute attr = (XMLAttribute)attributesList.elementAt(i);
if ((attr.getName() != null && attr.getName().toUpperCase().equals(pattern))
|| (attr.getValue() != null && attr.getValue().toUpperCase().indexOf(pattern) >= 0))
{
return true;
}
}
}
if (siblingsList != null) {
for (int i = siblingsList.size(); --i >= 0;) {
XMLElement elem = (XMLElement)siblingsList.elementAt(i);
if (elem.searchSiblings(pattern)) {
return true;
}
}
}
return false;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?