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 + -
显示快捷键?