node.java
来自「java 3d game jme 工程开发源代码」· Java 代码 · 共 520 行 · 第 1/2 页
JAVA
520 行
switch (type) {
case Attribute:
if( ((org.w3c.dom.Element)domNode).hasAttributeNS( namespaceURI, name ) == false )
return null;
return domNode.getAttributes().getNamedItemNS(namespaceURI, name);
case Element:
if( domNode.hasChildNodes() == false )
return null;
org.w3c.dom.Node child = domNode.getFirstChild();
while ( child != null ) {
if( child.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE )
if (domNodeNameEquals(child, namespaceURI, name)) {
org.w3c.dom.Node retElement = child;
child = null;
return retElement;
}
child = child.getNextSibling();
}
return null;
default:
throw new XmlException("Unknown type");
}
}
protected org.w3c.dom.Node getDomNextChild( int type, String namespaceURI, String name, org.w3c.dom.Node childNode ) {
int length, count = 0;
switch (type) {
case Attribute:
return null;
case Element:
org.w3c.dom.Node child = childNode;
if( child != null )
child = child.getNextSibling();
while ( child != null ) {
if (domNodeNameEquals(child, namespaceURI, name))
return child;
child = child.getNextSibling();
}
return null;
default:
throw new XmlException("Unknown type");
}
}
protected org.w3c.dom.Node getDomChild(int type, String namespaceURI, String name) {
return getDomChildAt(type, namespaceURI, name, 0);
}
protected org.w3c.dom.Node insertDomChildAt(int type, String namespaceURI, String name, int index, String value) {
if (type == Attribute) {
return appendDomChild(type, namespaceURI, name, value);
} else {
org.w3c.dom.Element element = domNode.getOwnerDocument().createElementNS(namespaceURI, name);
element.appendChild(domNode.getOwnerDocument().createTextNode(value));
return domNode.insertBefore(element, getDomChildAt(Element, namespaceURI, name, index));
}
}
protected org.w3c.dom.Node insertDomElementAt(String namespaceURI, String name, int index, com.jmex.xml.xml.Node srcNode) {
srcNode.domNode = domNode.insertBefore(
cloneDomElementAs(namespaceURI, name, srcNode),
getDomChildAt(Element, namespaceURI, name, index)
);
return srcNode.domNode;
}
protected org.w3c.dom.Node replaceDomChildAt(int type, String namespaceURI, String name, int index, String value) {
if (type == Attribute) {
return appendDomChild(type, namespaceURI, name, value);
} else {
org.w3c.dom.Element element = domNode.getOwnerDocument().createElementNS(namespaceURI, name);
element.appendChild(domNode.getOwnerDocument().createTextNode(value));
return domNode.replaceChild(element, getDomChildAt(Element, namespaceURI, name, index));
}
}
protected org.w3c.dom.Node replaceDomElementAt(String namespaceURI, String name, int index, com.jmex.xml.xml.Node srcNode) {
srcNode.domNode = domNode.replaceChild(
cloneDomElementAs(namespaceURI, name, srcNode),
getDomChildAt(Element, namespaceURI, name, index)
);
return srcNode.domNode;
}
protected org.w3c.dom.Node setDomChildAt(int type, String namespaceURI, String name, String value, int index) {
int length, count = 0;
switch (type) {
case Attribute:
org.w3c.dom.Attr oldAttr = ((org.w3c.dom.Element)domNode).getAttributeNodeNS(namespaceURI, name);
((org.w3c.dom.Element)domNode).setAttributeNS(namespaceURI, name, value);
return oldAttr;
case Element:
org.w3c.dom.NodeList elements = domNode.getChildNodes();
length = elements.getLength();
for (int i = 0; i < length; i++) {
org.w3c.dom.Node child = elements.item(i);
if (domNodeNameEquals(child, namespaceURI, name) && count++ == index)
return child.replaceChild(child.getOwnerDocument().createTextNode(value), child.getFirstChild());
}
throw new XmlException("Index out of range");
default:
throw new XmlException("Unknown type");
}
}
protected org.w3c.dom.Node setDomChild(int type, String namespaceURI, String name, String value) {
if (type == Attribute || getDomChildCount(type, namespaceURI, name) > 0) {
return setDomChildAt(type, namespaceURI, name, value, 0);
} else {
appendDomChild(type, namespaceURI, name, value);
return null;
}
}
protected org.w3c.dom.Node removeDomChildAt(int type, String namespaceURI, String name, int index) {
int length, count = 0;
switch (type) {
case Attribute:
return domNode.getAttributes().removeNamedItemNS(namespaceURI, name);
case Element:
org.w3c.dom.NodeList elements = domNode.getChildNodes();
length = elements.getLength();
for (int i = 0; i < length; i++) {
org.w3c.dom.Node child = elements.item(i);
if (domNodeNameEquals(child, namespaceURI, name) && count++ == index)
return domNode.removeChild(child);
}
throw new XmlException("Index out of range");
default:
throw new XmlException("Unknown type");
}
}
protected org.w3c.dom.Node appendDomElement(String namespaceURI, String name, com.jmex.xml.xml.Node srcNode) {
srcNode.domNode = domNode.appendChild(cloneDomElementAs(namespaceURI, name, srcNode));
return srcNode.domNode;
}
protected org.w3c.dom.Element cloneDomElementAs(String namespaceURI, String name, com.jmex.xml.xml.Node srcNode) {
org.w3c.dom.Element newDomNode = domNode.getOwnerDocument().createElementNS(namespaceURI, name);
org.w3c.dom.Element srcDomNode = (org.w3c.dom.Element)srcNode.domNode;
org.w3c.dom.Document doc = newDomNode.getOwnerDocument();
org.w3c.dom.NodeList list = srcDomNode.getChildNodes();
int length = list.getLength();
for (int i = 0; i < length; i++)
newDomNode.appendChild(doc.importNode(list.item(i), true));
org.w3c.dom.NamedNodeMap srcAttributes = srcDomNode.getAttributes();
org.w3c.dom.NamedNodeMap newAttributes = newDomNode.getAttributes();
length = srcAttributes.getLength();
for (int i = 0; i < length; i++)
newAttributes.setNamedItemNS((org.w3c.dom.Attr)doc.importNode(srcAttributes.item(i), false));
return newDomNode;
}
protected void cloneInto(org.w3c.dom.Element newDomNode) {
while (domNode.getFirstChild() != null) {
org.w3c.dom.Node n = newDomNode.getOwnerDocument().importNode(domNode.getFirstChild(), true);
newDomNode.appendChild(n);
domNode.removeChild(domNode.getFirstChild());
}
org.w3c.dom.NamedNodeMap srcAttributes = ((org.w3c.dom.Element)domNode).getAttributes();
org.w3c.dom.NamedNodeMap newAttributes = newDomNode.getAttributes();
while (srcAttributes.getLength() > 0) {
org.w3c.dom.Node n = srcAttributes.item(0);
newAttributes.setNamedItem(newDomNode.getOwnerDocument().importNode(n, true));
srcAttributes.removeNamedItem(n.getNodeName());
}
domNode = newDomNode;
}
protected static String lookupPrefix(org.w3c.dom.Node node, String URI) {
if (node == null || URI == null || URI.equals(""))
return null;
if (node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
org.w3c.dom.NamedNodeMap attrs = node.getAttributes();
if (attrs != null) {
int len = attrs.getLength();
for (int i = 0; i < len; i++) {
org.w3c.dom.Attr attr = (org.w3c.dom.Attr)attrs.item(i);
String name = attr.getName();
String value = attr.getValue();
if (value != null && value.equals(URI)) {
if (name.startsWith("xmlns:"))
return name.substring(6);
}
}
}
return lookupPrefix(node.getParentNode(), URI);
} else if (node.getNodeType() == org.w3c.dom.Node.ATTRIBUTE_NODE) {
return lookupPrefix(((org.w3c.dom.Attr)node).getOwnerElement(), URI);
} else {
return null;
}
}
protected static String lookupDefaultNamespace(org.w3c.dom.Node node) {
if (node == null)
return null;
if (node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
org.w3c.dom.Attr attr = ((org.w3c.dom.Element)node).getAttributeNode("xmlns");
if (attr != null)
return attr.getValue();
}
return lookupDefaultNamespace(node.getParentNode());
}
protected static void internalAdjustPrefix(org.w3c.dom.Node node, boolean qualified) {
if (node == null)
return;
if (qualified) {
String prefix = lookupPrefix(node, node.getNamespaceURI());
if (prefix != null)
node.setPrefix(prefix);
}
else if (node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
org.w3c.dom.Element element = (org.w3c.dom.Element)node;
if (lookupDefaultNamespace(element) != null)
element.setAttribute("xmlns", "");
}
}
public abstract void adjustPrefix();
public static org.w3c.dom.Node dereference(org.w3c.dom.Node node) {
if (node.getNodeType() != org.w3c.dom.Node.ELEMENT_NODE)
return node;
String href = ((org.w3c.dom.Element)node).getAttribute("href");
if (href == null || href.length() == 0)
return node;
href = href.substring(1);
for (org.w3c.dom.Node ref = node.getOwnerDocument().getDocumentElement().getFirstChild().getNextSibling(); ref != null; ref = ref.getNextSibling())
if (ref.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE && ((org.w3c.dom.Element)ref).getAttribute("id").equals(href))
return ref;
return node;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?