Java by API/javax.xml.stream/XMLEventReader
Содержание
XMLEventReader: hasNext()
<source lang="java">
import java.io.FileReader; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.events.XMLEvent; public class Main {
public static void main(String args[]) throws Exception { XMLInputFactory xmlif = XMLInputFactory.newInstance(); XMLEventReader xmler = xmlif.createXMLEventReader(new FileReader("yourFile.xml")); XMLEvent event; while (xmler.hasNext()) { event = xmler.nextEvent(); if (event.isStartElement()) { System.out.println(event.asStartElement().getName()); } else if (event.isCharacters()) { System.out.println(event.asCharacters().getData()); } } }
}
</source>
XMLEventReader: nextEvent() throws XMLStreamException
<source lang="java">
import java.io.FileInputStream; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.events.XMLEvent; public class Main {
public static void main(String[] args) throws Exception { String filename = "yourXML.xml"; XMLInputFactory factory = XMLInputFactory.newInstance(); System.out.println("FACTORY: " + factory); XMLEventReader r = factory.createXMLEventReader(filename, new FileInputStream(filename)); while (r.hasNext()) { XMLEvent e = r.nextEvent(); System.out.println(e.toString()); } } public static final String getEventTypeString(int eventType) { switch (eventType) { case XMLEvent.START_ELEMENT: return "START_ELEMENT"; case XMLEvent.END_ELEMENT: return "END_ELEMENT"; case XMLEvent.PROCESSING_INSTRUCTION: return "PROCESSING_INSTRUCTION"; case XMLEvent.CHARACTERS: return "CHARACTERS"; case XMLEvent.ruMENT: return "COMMENT"; case XMLEvent.START_DOCUMENT: return "START_DOCUMENT"; case XMLEvent.END_DOCUMENT: return "END_DOCUMENT"; case XMLEvent.ENTITY_REFERENCE: return "ENTITY_REFERENCE"; case XMLEvent.ATTRIBUTE: return "ATTRIBUTE"; case XMLEvent.DTD: return "DTD"; case XMLEvent.CDATA: return "CDATA"; case XMLEvent.SPACE: return "SPACE"; } return "UNKNOWN_EVENT_TYPE " + "," + eventType; }
}
</source>
XMLEventWriter: add(XMLEvent event) throws XMLStreamException
<source lang="java">
import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.xml.stream.XMLEventFactory; import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.events.Attribute; import javax.xml.stream.events.Namespace; public class Main {
public static void main(String[] args) throws Exception { XMLEventFactory eventFactory = XMLEventFactory.newInstance(); XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(System.out); Namespace ns1 = eventFactory.createNamespace("ns1", "http://www.e.ru/ns1"); Namespace ns2 = eventFactory.createNamespace("ns2", "http://www.e.ru/ns2"); List<Namespace> namespaceList = new ArrayList<Namespace>(); namespaceList.add(ns1); namespaceList.add(ns2); Attribute attribute = eventFactory.createAttribute(ns2.getPrefix(), ns2.getNamespaceURI(), "attribute", "true"); writer.add(eventFactory.createStartElement(ns1.getPrefix(), ns1.getNamespaceURI(), "sample", Collections.singletonList(attribute).iterator(), namespaceList.iterator())); writer.add(eventFactory.createEndDocument()); writer.flush(); }
}
</source>
XMLEventWriter: add(XMLEventReader reader) throws XMLStreamException
<source lang="java">
import java.io.FileInputStream; import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLEventWriter; import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLResolver; import javax.xml.stream.XMLStreamException; public class Main {
public static void main(String[] args) throws Exception { XMLInputFactory inputFactory = XMLInputFactory.newInstance(); inputFactory.setXMLResolver(new XMLResolver() { public Object resolveEntity(String publicID, String systemID, String baseURI, String namespace) throws XMLStreamException { System.out.println(systemID); return null; } }); XMLEventReader reader = inputFactory.createXMLEventReader(new FileInputStream( "dtd.xml")); XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(System.out); writer.add(reader); writer.flush(); }
}
</source>