qdocument.java
来自「RESIN 3.2 最新源码」· Java 代码 · 共 1,083 行 · 第 1/2 页
JAVA
1,083 行
*/ public Attr createAttribute(String prefix, String local, String url) throws DOMException { QName name = new QName(prefix, local, url); if (url != null && ! url.equals("")) addNamespace(prefix, url); QAttr attr = new QAttr(name, null); attr._owner = this; return attr; } /** * Creates a new namespace-aware attribute */ public Attr createAttributeNS(String namespaceURI, String qualifiedName) throws DOMException { QName qname = createName(namespaceURI, qualifiedName); validateName(qname); addNamespace(qname); /* xml/0213 else if (name.getNamespace() == "") throw new DOMException(DOMException.NAMESPACE_ERR, L.l("`{0}' prefix expects a namespace uri", name.getPrefix())); */ QAttr attr = new QAttr(qname, null); attr._owner = this; return attr; } public QName createName(String uri, String name) { _nameKey.init(name, uri); QName qName = _nameCache.get(_nameKey); if (qName != null) return qName; if (uri == null) { qName = new QName(null, name, null); } else { int p = name.indexOf(':'); String prefix; String local; if (p < 0) { prefix = null; local = name; } else { prefix = name.substring(0, p); local = name.substring(p + 1); } qName = new QName(prefix, local, uri); } _nameCache.put(new NameKey(name, uri), qName); return qName; } /** * Creates a new namespace-aware attribute */ public Attr createAttribute(QName name, String value) throws DOMException { String url = name.getNamespace(); if (url != null && url != "") { addNamespace(name.getPrefix(), url); } QAttr attr = new QAttr(name, value); attr._owner = this; return attr; } public EntityReference createEntityReference(String name) throws DOMException { if (! isNameValid(name)) throw new QDOMException(DOMException.INVALID_CHARACTER_ERR, "illegal entityReference `" + name + "'"); QEntityReference er = new QEntityReference(name); er._owner = this; return er; } /** * Returns a list of elements, filtered by the tag name. */ public NodeList getElementsByTagName(String name) { if (_element == null) return new QDeepNodeList(null, null, null); else return new QDeepNodeList(_element, _element, new QElement.TagPredicate(name)); } public NodeList getElementsByTagNameNS(String uri, String name) { if (_element == null) return new QDeepNodeList(null, null, null); else return new QDeepNodeList(_element, _element, new QElement.NSTagPredicate(uri, name)); } public Element getElementById(String name) { Node node = _element; for (; node != null; node = XmlUtil.getNext(node)) { if (node instanceof Element) { Element elt = (Element) node; String id = elt.getAttribute("id"); if (name.equals(id)) return elt; } } return null; } static public Document create() { QDocument doc = new QDocument(); doc._masterDoc = doc; return doc; } void setAttributes(HashMap<String,String> attributes) { _attributes = attributes; } public Node appendChild(Node newChild) throws DOMException { if (newChild instanceof Element) { _element = (QElement) newChild; // xml/0201 if (false && _namespaces != null) { Iterator<String> iter = _namespaces.keySet().iterator(); while (iter.hasNext()) { String prefix = iter.next(); String ns = _namespaces.get(prefix); String xmlns; if (prefix.equals("")) xmlns = "xmlns"; else xmlns = "xmlns:" + prefix; if (_element.getAttribute(xmlns).equals("")) { QName qName = new QName(xmlns, XmlParser.XMLNS); _element.setAttributeNode(createAttribute(qName, ns)); } } } } return super.appendChild(newChild); } public Node removeChild(Node oldChild) throws DOMException { Node value = super.removeChild(oldChild); if (oldChild == _element) _element = null; return value; } // non-DOM public void addNamespace(QName qname) { addNamespace(qname.getPrefix(), qname.getNamespaceURI()); } /** * Add a namespace declaration to a document. If the declaration * prefix already has a namespace, the old one wins. */ public void addNamespace(String prefix, String url) { if (url == null || url.length() == 0 || XmlParser.XMLNS.equals(url) || XmlParser.XML.equals(url)) { return; } if (prefix == null) prefix = ""; if (_namespaces == null) _namespaces = new HashMap<String,String>(); String old = _namespaces.get(prefix); if (old == null) _namespaces.put(prefix, url.intern()); } public HashMap<String,String> getNamespaces() { return _namespaces; } /** * Returns the namespace url for a given prefix. */ public String getNamespace(String prefix) { if (_namespaces == null) return null; else return _namespaces.get(prefix); } /** * Returns an iterator of top-level namespace prefixes. */ public Iterator<String> getNamespaceKeys() { if (_namespaces == null) return null; return _namespaces.keySet().iterator(); } public Object getProperty(String name) { if (name.equals(DEPENDS)) return _depends; else return null; } public ArrayList<Path> getDependList() { return _depends; } public ArrayList<Depend> getDependencyList() { return _dependList; } public void setProperty(String name, Object value) { if (name.equals(DEPENDS)) _depends = (ArrayList) value; } // DOM LEVEL 3 public String getActualEncoding() { throw new UnsupportedOperationException(); } public void setActualEncoding(String actualEncoding) { throw new UnsupportedOperationException(); }/* public String getEncoding() { throw new UnsupportedOperationException(); }*/ public void setEncoding(String encoding) { throw new UnsupportedOperationException(); } public boolean getStandalone() { return _standalone; } public void setStandalone(boolean standalone) { _standalone = true; } public String getXmlVersion() { return _version; } public void setXmlVersion(String version) throws DOMException { _version = version; } public void setXmlStandalone(boolean value) throws DOMException { } public TypeInfo getSchemaTypeInfo() { return null; } public String getXmlEncoding() { return null; } public String getInputEncoding() { return null; } public boolean getXmlStandalone() throws DOMException { return false; } public boolean getStrictErrorChecking() { throw new UnsupportedOperationException(); } public void setStrictErrorChecking(boolean strictErrorChecking) { throw new UnsupportedOperationException(); } public DOMErrorHandler getErrorHandler() { throw new UnsupportedOperationException(); } public void setErrorHandler(DOMErrorHandler errorHandler) { throw new UnsupportedOperationException(); } public String getDocumentURI() { throw new UnsupportedOperationException(); } public void setDocumentURI(String documentURI) { throw new UnsupportedOperationException(); } public Node adoptNode(Node source) throws DOMException { throw new UnsupportedOperationException(); } public void normalizeDocument() { throw new UnsupportedOperationException(); } public boolean canSetNormalizationFeature(String name, boolean state) { throw new UnsupportedOperationException(); } public void setNormalizationFeature(String name, boolean state) throws DOMException { throw new UnsupportedOperationException(); } public boolean getNormalizationFeature(String name) throws DOMException { throw new UnsupportedOperationException(); } public Node renameNode(Node n, String namespaceURI, String name) throws DOMException { throw new UnsupportedOperationException(); } // CAUCHO public void addDepend(Path path) { if (path == null) return; if (_depends == null) _depends = new ArrayList<Path>(); if (! _depends.contains(path)) { _depends.add(path); if (_dependList == null) _dependList = new ArrayList<Depend>(); _dependList.add(new Depend(path)); } } public boolean isModified() { if (_dependList == null) return false; for (int i = 0; i < _dependList.size(); i++) { Depend depend = _dependList.get(i); if (depend.isModified()) return true; } return false; } void print(XmlPrinter os) throws IOException { os.startDocument(this); if (_namespaces != null) { Iterator<String> iter = _namespaces.keySet().iterator(); while (iter.hasNext()) { String prefix = iter.next(); String url = _namespaces.get(prefix); if (prefix.equals("")) os.attribute(null, prefix, "xmlns", url); else os.attribute(null, prefix, "xmlns:" + prefix, url); } } if (getFirstChild() == null) os.printHeader(null); for (Node node = getFirstChild(); node != null; node = node.getNextSibling()) { ((QAbstractNode) node).print(os); if (os.isPretty()) os.println(); } os.endDocument(); } public String toString() { String topElt = _element == null ? "XXX:top" : _element.getNodeName(); if (_dtd == null) return "Document[" + topElt + "]"; if (_dtd.getPublicId() != null && _dtd.getSystemId() != null) return ("Document[" + topElt + " PUBLIC '" + _dtd.getPublicId() + "' '" + _dtd.getSystemId() + "']"); else if (_dtd._publicId != null) return "Document[" + topElt + " PUBLIC '" + _dtd.getPublicId() + "']"; else if (_dtd.getSystemId() != null) return "Document[" + topElt + " SYSTEM '" + _dtd.getSystemId() + "']"; else return "Document[" + topElt + "]"; } static class NameKey { String _qName; String _url; NameKey() { } NameKey(String qName, String url) { init(qName, url); } void init(String qName, String url) { if (qName == null) throw new NullPointerException(); if (url == null) url = ""; _qName = qName; _url = url; } public int hashCode() { return 65521 * _url.hashCode() + _qName.hashCode(); } public boolean equals(Object b) { if (! (b instanceof NameKey)) return false; NameKey key = (NameKey) b; return _qName.equals(key._qName) && _url.equals(key._url); } } private Object writeReplace() { return new SerializedXml(this); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?