📄 xmlparser.java
字号:
this.validating = validating; this.namespaceAware = namespaceAware; this.coalescing = coalescing; this.replaceERefs = replaceERefs; this.externalEntities = externalEntities; this.supportDTD = supportDTD; this.baseAware = baseAware; this.stringInterning = stringInterning; this.extendedEventTypes = extendedEventTypes; this.reporter = reporter; this.resolver = resolver; if (validating) { validationStack = new LinkedList(); ids = new HashSet(); idrefs = new HashSet(); } pushInput(new Input(null, reader, null, systemId, null, null, false, true)); } // -- NamespaceContext -- public String getNamespaceURI(String prefix) { if (XMLConstants.XML_NS_PREFIX.equals(prefix)) return XMLConstants.XML_NS_URI; if (XMLConstants.XMLNS_ATTRIBUTE.equals(prefix)) return XMLConstants.XMLNS_ATTRIBUTE_NS_URI; for (Iterator i = namespaces.iterator(); i.hasNext(); ) { LinkedHashMap ctx = (LinkedHashMap) i.next(); String namespaceURI = (String) ctx.get(prefix); if (namespaceURI != null) return namespaceURI; } return null; } public String getPrefix(String namespaceURI) { if (XMLConstants.XML_NS_URI.equals(namespaceURI)) return XMLConstants.XML_NS_PREFIX; if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) return XMLConstants.XMLNS_ATTRIBUTE; for (Iterator i = namespaces.iterator(); i.hasNext(); ) { LinkedHashMap ctx = (LinkedHashMap) i.next(); if (ctx.containsValue(namespaceURI)) { for (Iterator j = ctx.entrySet().iterator(); j.hasNext(); ) { Map.Entry entry = (Map.Entry) i.next(); String uri = (String) entry.getValue(); if (uri.equals(namespaceURI)) return (String) entry.getKey(); } } } return null; } public Iterator getPrefixes(String namespaceURI) { if (XMLConstants.XML_NS_URI.equals(namespaceURI)) return Collections.singleton(XMLConstants.XML_NS_PREFIX).iterator(); if (XMLConstants.XMLNS_ATTRIBUTE_NS_URI.equals(namespaceURI)) return Collections.singleton(XMLConstants.XMLNS_ATTRIBUTE).iterator(); LinkedList acc = new LinkedList(); for (Iterator i = namespaces.iterator(); i.hasNext(); ) { LinkedHashMap ctx = (LinkedHashMap) i.next(); if (ctx.containsValue(namespaceURI)) { for (Iterator j = ctx.entrySet().iterator(); j.hasNext(); ) { Map.Entry entry = (Map.Entry) i.next(); String uri = (String) entry.getValue(); if (uri.equals(namespaceURI)) acc.add(entry.getKey()); } } } return acc.iterator(); } // -- XMLStreamReader -- public void close() throws XMLStreamException { stack = null; namespaces = null; bases = null; buf = null; attrs = null; doctype = null; inputStack = null; validationStack = null; ids = null; idrefs = null; } public NamespaceContext getNamespaceContext() { return this; } public int getAttributeCount() { return attrs.size(); } public String getAttributeLocalName(int index) { Attribute a = (Attribute) attrs.get(index); return a.localName; } public String getAttributeNamespace(int index) { String prefix = getAttributePrefix(index); return getNamespaceURI(prefix); } public String getAttributePrefix(int index) { Attribute a = (Attribute) attrs.get(index); return a.prefix; } public QName getAttributeName(int index) { Attribute a = (Attribute) attrs.get(index); String namespaceURI = getNamespaceURI(a.prefix); return new QName(namespaceURI, a.localName, a.prefix); } public String getAttributeType(int index) { Attribute a = (Attribute) attrs.get(index); return a.type; } private String getAttributeType(String elementName, String attName) { if (doctype != null) { AttributeDecl att = doctype.getAttributeDecl(elementName, attName); if (att != null) return att.type; } return "CDATA"; } public String getAttributeValue(int index) { Attribute a = (Attribute) attrs.get(index); return a.value; } public String getAttributeValue(String namespaceURI, String localName) { for (Iterator i = attrs.iterator(); i.hasNext(); ) { Attribute a = (Attribute) i.next(); if (a.localName.equals(localName)) { String uri = getNamespaceURI(a.prefix); if ((uri == null && namespaceURI == null) || (uri != null && uri.equals(namespaceURI))) return a.value; } } return null; } boolean isAttributeDeclared(int index) { if (doctype == null) return false; Attribute a = (Attribute) attrs.get(index); String qn = ("".equals(a.prefix)) ? a.localName : a.prefix + ":" + a.localName; String elementName = buf.toString(); return doctype.isAttributeDeclared(elementName, qn); } public String getCharacterEncodingScheme() { return xmlEncoding; } public String getElementText() throws XMLStreamException { if (event != XMLStreamConstants.START_ELEMENT) throw new XMLStreamException("current event must be START_ELEMENT"); StringBuffer elementText = new StringBuffer(); int depth = stack.size(); while (event != XMLStreamConstants.END_ELEMENT || stack.size() > depth) { switch (next()) { case XMLStreamConstants.CHARACTERS: case XMLStreamConstants.SPACE: elementText.append(buf.toString()); } } return elementText.toString(); } public String getEncoding() { return (input.inputEncoding == null) ? "UTF-8" : input.inputEncoding; } public int getEventType() { return event; } public String getLocalName() { switch (event) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: String qName = buf.toString(); int ci = qName.indexOf(':'); return (ci == -1) ? qName : qName.substring(ci + 1); default: return null; } } public Location getLocation() { return input; } public QName getName() { switch (event) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: String qName = buf.toString(); int ci = qName.indexOf(':'); String localName = (ci == -1) ? qName : qName.substring(ci + 1); String prefix = (ci == -1) ? (namespaceAware ? XMLConstants.DEFAULT_NS_PREFIX : null) : qName.substring(0, ci); String namespaceURI = getNamespaceURI(prefix); return new QName(namespaceURI, localName, prefix); default: return null; } } public int getNamespaceCount() { if (!namespaceAware || namespaces.isEmpty()) return 0; switch (event) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: LinkedHashMap ctx = (LinkedHashMap) namespaces.getFirst(); return ctx.size(); default: return 0; } } public String getNamespacePrefix(int index) { LinkedHashMap ctx = (LinkedHashMap) namespaces.getFirst(); int count = 0; for (Iterator i = ctx.keySet().iterator(); i.hasNext(); ) { String prefix = (String) i.next(); if (count++ == index) return prefix; } return null; } public String getNamespaceURI() { switch (event) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: String qName = buf.toString(); int ci = qName.indexOf(':'); if (ci == -1) return null; String prefix = qName.substring(0, ci); return getNamespaceURI(prefix); default: return null; } } public String getNamespaceURI(int index) { LinkedHashMap ctx = (LinkedHashMap) namespaces.getFirst(); int count = 0; for (Iterator i = ctx.values().iterator(); i.hasNext(); ) { String uri = (String) i.next(); if (count++ == index) return uri; } return null; } public String getPIData() { return piData; } public String getPITarget() { return piTarget; } public String getPrefix() { switch (event) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: String qName = buf.toString(); int ci = qName.indexOf(':'); return (ci == -1) ? (namespaceAware ? XMLConstants.DEFAULT_NS_PREFIX : null) : qName.substring(0, ci); default: return null; } } public Object getProperty(String name) throws IllegalArgumentException { if (name == null) throw new IllegalArgumentException("name is null"); if (XMLInputFactory.ALLOCATOR.equals(name)) return null; if (XMLInputFactory.IS_COALESCING.equals(name)) return coalescing ? Boolean.TRUE : Boolean.FALSE; if (XMLInputFactory.IS_NAMESPACE_AWARE.equals(name)) return namespaceAware ? Boolean.TRUE : Boolean.FALSE; if (XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES.equals(name)) return replaceERefs ? Boolean.TRUE : Boolean.FALSE; if (XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES.equals(name)) return externalEntities ? Boolean.TRUE : Boolean.FALSE; if (XMLInputFactory.IS_VALIDATING.equals(name)) return Boolean.FALSE; if (XMLInputFactory.REPORTER.equals(name)) return reporter; if (XMLInputFactory.RESOLVER.equals(name)) return resolver; if (XMLInputFactory.SUPPORT_DTD.equals(name)) return supportDTD ? Boolean.TRUE : Boolean.FALSE; if ("gnu.xml.stream.stringInterning".equals(name)) return stringInterning ? Boolean.TRUE : Boolean.FALSE; if ("gnu.xml.stream.xmlBase".equals(name)) return baseAware ? Boolean.TRUE : Boolean.FALSE; if ("gnu.xml.stream.baseURI".equals(name)) return getXMLBase(); return null; } public String getText() { return buf.toString(); } public char[] getTextCharacters() { return buf.toString().toCharArray(); } public int getTextCharacters(int sourceStart, char[] target, int targetStart, int length) throws XMLStreamException { length = Math.min(sourceStart + buf.length(), length); int sourceEnd = sourceStart + length; buf.getChars(sourceStart, sourceEnd, target, targetStart); return length; } public int getTextLength() { return buf.length(); } public int getTextStart() { return 0; } public String getVersion() { return (xmlVersion == null) ? "1.0" : xmlVersion; } public boolean hasName() { switch (event) { case XMLStreamConstants.START_ELEMENT: case XMLStreamConstants.END_ELEMENT: return true; default: return false; } } public boolean hasText() { switch (event) { case XMLStreamConstants.CHARACTERS: case XMLStreamConstants.SPACE: return true; default: return false; } } public boolean isAttributeSpecified(int index) { Attribute a = (Attribute) attrs.get(index); return a.specified; } public boolean isCharacters() { return (event == XMLStreamConstants.CHARACTERS); } public boolean isEndElement() { return (event == XMLStreamConstants.END_ELEMENT); } public boolean isStandalone() { return Boolean.TRUE.equals(xmlStandalone); } public boolean isStartElement() { return (event == XMLStreamConstants.START_ELEMENT); } public boolean isWhiteSpace() { return (event == XMLStreamConstants.SPACE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -