下面列出了org.xml.sax.ext.Locator2#javax.xml.stream.events.StartDocument 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Test
public void testBypassElementBlockWrongPairing() throws XMLStreamException, ParsingException {
String xml = "<a><b><c>test</c>"
+ "<d><b>aa</d><d>nestedD</d></d></b></a>";
XMLEventReader reader = StaxParserUtil.getXMLEventReader(IOUtils.toInputStream(xml, Charset.defaultCharset()));
assertThat(reader.nextEvent(), instanceOf(StartDocument.class));
assertStartTag(reader.nextEvent(), "a");
assertStartTag(reader.nextEvent(), "b");
assertStartTag(reader.nextEvent(), "c");
assertCharacters(reader.nextEvent(), is("test"));
assertEndTag(reader.nextEvent(), "c");
expectedException.expect(ParsingException.class);
StaxParserUtil.bypassElementBlock(reader, "d");
}
@Test
public void testBypassElementBlockNested() throws XMLStreamException, ParsingException {
String xml = "<a><b><c>test</c>"
+ "<d>aa<d>nestedD</d></d></b></a>";
XMLEventReader reader = StaxParserUtil.getXMLEventReader(IOUtils.toInputStream(xml, Charset.defaultCharset()));
assertThat(reader.nextEvent(), instanceOf(StartDocument.class));
assertStartTag(reader.nextEvent(), "a");
assertStartTag(reader.nextEvent(), "b");
assertStartTag(reader.nextEvent(), "c");
assertCharacters(reader.nextEvent(), is("test"));
assertEndTag(reader.nextEvent(), "c");
StaxParserUtil.bypassElementBlock(reader, "d");
assertEndTag(reader.nextEvent(), "b");
assertEndTag(reader.nextEvent(), "a");
}
@Test
public void testBypassElementBlockNestedPrematureEnd() throws XMLStreamException, ParsingException {
String xml = "<a><b><c>test</c>"
+ "<d>aa<d>nestedD</d></d>";
XMLEventReader reader = StaxParserUtil.getXMLEventReader(IOUtils.toInputStream(xml, Charset.defaultCharset()));
assertThat(reader.nextEvent(), instanceOf(StartDocument.class));
assertStartTag(reader.nextEvent(), "a");
assertStartTag(reader.nextEvent(), "b");
assertStartTag(reader.nextEvent(), "c");
assertCharacters(reader.nextEvent(), is("test"));
assertEndTag(reader.nextEvent(), "c");
StaxParserUtil.bypassElementBlock(reader, "d");
expectedException.expect(XMLStreamException.class);
reader.nextEvent();
}
@Test
public void testBypassElementBlockAnon() throws XMLStreamException, ParsingException {
String xml = "<a><b><c>test</c>"
+ "<d>aa</d></b></a>";
XMLEventReader reader = StaxParserUtil.getXMLEventReader(IOUtils.toInputStream(xml, Charset.defaultCharset()));
assertThat(reader.nextEvent(), instanceOf(StartDocument.class));
assertStartTag(reader.nextEvent(), "a");
assertStartTag(reader.nextEvent(), "b");
assertStartTag(reader.nextEvent(), "c");
assertCharacters(reader.nextEvent(), is("test"));
assertEndTag(reader.nextEvent(), "c");
StaxParserUtil.bypassElementBlock(reader);
assertEndTag(reader.nextEvent(), "b");
assertEndTag(reader.nextEvent(), "a");
}
public void save(ArrayList<Animal> animals) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(XML_FILENAME));
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable animal : animals) {
StartElement sElement = eventFactory.createStartElement("", "", Constants.XML_TAGS.ANIMAL);
eventWriter.add(sElement);
eventWriter.add(end);
animal.encodeToXml(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", Constants.XML_TAGS.ANIMAL);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
public void save(ArrayList<Employee> employees) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(XML_FILENAME));
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable employee : employees) {
StartElement sElement = eventFactory.createStartElement("", "", Constants.XML_TAGS.EMPLOYEE);
eventWriter.add(sElement);
eventWriter.add(end);
employee.encodeToXml(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", Constants.XML_TAGS.EMPLOYEE);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
public void save(ArrayList<T> entities) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(this.xmlFilename));
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable entity : entities) {
StartElement sElement = eventFactory.createStartElement("", "", this.entityTag);
eventWriter.add(sElement);
eventWriter.add(end);
entity.encodeToXml(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", this.entityTag);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
public void save(ArrayList<T> entities) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(this.xmlFilename));
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable entity : entities) {
StartElement sElement = eventFactory.createStartElement("", "", this.entityTag);
eventWriter.add(sElement);
eventWriter.add(end);
entity.encodeToXml(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", this.entityTag);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
@Test
public void testBypassElementBlock() throws XMLStreamException, ParsingException {
String xml = "<a><b><c>test</c>"
+ "<d>aa</d></b></a>";
XMLEventReader reader = StaxParserUtil.getXMLEventReader(IOUtils.toInputStream(xml, Charset.defaultCharset()));
assertThat(reader.nextEvent(), instanceOf(StartDocument.class));
assertStartTag(reader.nextEvent(), "a");
assertStartTag(reader.nextEvent(), "b");
assertStartTag(reader.nextEvent(), "c");
assertCharacters(reader.nextEvent(), is("test"));
assertEndTag(reader.nextEvent(), "c");
StaxParserUtil.bypassElementBlock(reader, "d");
assertEndTag(reader.nextEvent(), "b");
assertEndTag(reader.nextEvent(), "a");
}
@Override
@Nullable
public String getVersion() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).getVersion();
}
else {
return null;
}
}
@Override
public boolean isStandalone() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).isStandalone();
}
else {
throw new IllegalStateException();
}
}
@Override
public boolean standaloneSet() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).standaloneSet();
}
else {
throw new IllegalStateException();
}
}
@Override
@Nullable
public String getVersion() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).getVersion();
}
else {
return null;
}
}
@Override
public boolean isStandalone() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).isStandalone();
}
else {
throw new IllegalStateException();
}
}
@Override
public boolean standaloneSet() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).standaloneSet();
}
else {
throw new IllegalStateException();
}
}
@Override
public String getVersion() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).getVersion();
}
else {
return null;
}
}
@Override
public boolean isStandalone() {
if (this.event.isStartDocument()) {
return ((StartDocument) event).isStandalone();
}
else {
throw new IllegalStateException();
}
}
@Override
public boolean standaloneSet() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).standaloneSet();
}
else {
throw new IllegalStateException();
}
}
@Test
public void testEncodingSet() {
XMLEventFactory f = XMLEventFactory.newInstance();
try {
StartDocument sd = f.createStartDocument("UTF-8");
System.out.println("Encoding: " + sd.getCharacterEncodingScheme());
System.out.println("Encoding set: " + sd.encodingSet());
Assert.assertTrue(sd.encodingSet(), "encoding is set, should return true.");
} catch (Exception e) {
Assert.fail(e.getMessage());
}
}
@Test
public void testStandaloneSet() {
XMLEventFactory f = XMLEventFactory.newInstance();
try {
StartDocument sd = f.createStartDocument("UTF-8", "1.0", true);
System.out.println(sd.isStandalone());
System.out.println(sd.standaloneSet());
Assert.assertTrue(sd.standaloneSet(), "standalone is set, should return true.");
} catch (Exception e) {
Assert.fail(e.getMessage());
}
}
@Override
public String getVersion() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).getVersion();
}
else {
return null;
}
}
@Override
public boolean isStandalone() {
if (this.event.isStartDocument()) {
return ((StartDocument) event).isStandalone();
}
else {
throw new IllegalStateException();
}
}
@Override
public boolean standaloneSet() {
if (this.event.isStartDocument()) {
return ((StartDocument) this.event).standaloneSet();
}
else {
throw new IllegalStateException();
}
}
public void writeXML(String fileName, String rootElement, Map<String, String> elementsMap){
XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newInstance();
try {
// XMLEventWriter xmlEventWriter = xmlOutputFactory
// .createXMLEventWriter(new FileOutputStream(fileName), "UTF-8");
//For Debugging - below code to print XML to Console
XMLEventWriter xmlEventWriter = xmlOutputFactory.createXMLEventWriter(System.out);
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
StartDocument startDocument = eventFactory.createStartDocument();
xmlEventWriter.add(startDocument);
xmlEventWriter.add(end);
StartElement configStartElement = eventFactory.createStartElement("",
"", rootElement);
xmlEventWriter.add(configStartElement);
xmlEventWriter.add(end);
// Write the element nodes
Set<String> elementNodes = elementsMap.keySet();
for(String key : elementNodes){
createNode(xmlEventWriter, key, elementsMap.get(key));
}
xmlEventWriter.add(eventFactory.createEndElement("", "", rootElement));
xmlEventWriter.add(end);
xmlEventWriter.add(eventFactory.createEndDocument());
xmlEventWriter.close();
} catch ( XMLStreamException e) {
e.printStackTrace();
}
}
public void save(ArrayList<T> entities) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(this.xmlFilename));
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
// Create and write start tag
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
// Create content open tag
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable entity : entities) {
StartElement sElement = eventFactory.createStartElement("", "", this.entityTag);
eventWriter.add(sElement);
eventWriter.add(end);
entity.encodeToXML(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", this.entityTag);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
public void save(ArrayList<T> entities) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(this.xmlFilename));
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable entitity : entities) {
StartElement sElement = eventFactory.createStartElement("", "", this.entityTag);
eventWriter.add(sElement);
eventWriter.add(end);
entitity.encodeToXml(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", this.entityTag);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
public void save(ArrayList<T> entities) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// Create XMLEventWriter
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(this.xmlFilename));
// Create a EventFactory
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
// Create and write Start Tag
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
// Create content open tag
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable entity : entities) {
StartElement sElement = eventFactory.createStartElement("", "", this.entityTag);
eventWriter.add(sElement);
eventWriter.add(end);
entity.encodeToXml(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", this.entityTag);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
@Test
public void testGetDOMElementSameElements() throws XMLStreamException, ParsingException {
String xml = "<root><test><test><a>b</a></test></test></root>";
XMLEventReader reader = StaxParserUtil.getXMLEventReader(IOUtils.toInputStream(xml, Charset.defaultCharset()));
assertThat(reader.nextEvent(), instanceOf(StartDocument.class));
assertStartTag(reader.nextEvent(), "root");
Element element = StaxParserUtil.getDOMElement(reader);
assertThat(element.getNodeName(), is("test"));
assertThat(element.getChildNodes().getLength(), is(1));
assertThat(element.getChildNodes().item(0), instanceOf(Element.class));
Element e = (Element) element.getChildNodes().item(0);
assertThat(e.getNodeName(), is("test"));
assertThat(e.getChildNodes().getLength(), is(1));
assertThat(e.getChildNodes().item(0), instanceOf(Element.class));
Element e1 = (Element) e.getChildNodes().item(0);
assertThat(e1.getNodeName(), is("a"));
assertThat(e1.getChildNodes().getLength(), is(1));
assertThat(e1.getChildNodes().item(0), instanceOf(Text.class));
assertThat(((Text) e1.getChildNodes().item(0)).getWholeText(), is("b"));
assertEndTag(reader.nextEvent(), "root");
assertThat(reader.nextEvent(), instanceOf(EndDocument.class));
expectedException.expect(NoSuchElementException.class);
Assert.fail(String.valueOf(reader.nextEvent()));
}
public void save(ArrayList<Animal> animals) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// Create XMLEventWriter
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(XML_FILENAME));
// Create a EventFactory
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
// Create and write Start Tag
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
// Create content open tag
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable animal : animals) {
StartElement sElement = eventFactory.createStartElement("", "", Constants.XML_TAGS.ANIMAL);
eventWriter.add(sElement);
eventWriter.add(end);
animal.encodeToXml(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", Constants.XML_TAGS.ANIMAL);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}
public void save(ArrayList<Employee> employees) throws FileNotFoundException, XMLStreamException {
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
// Create XMLEventWriter
XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(XML_FILENAME));
// Create a EventFactory
XMLEventFactory eventFactory = XMLEventFactory.newInstance();
XMLEvent end = eventFactory.createDTD("\n");
// Create and write Start Tag
StartDocument startDocument = eventFactory.createStartDocument();
eventWriter.add(startDocument);
// Create content open tag
StartElement configStartElement = eventFactory.createStartElement("", "", "content");
eventWriter.add(configStartElement);
eventWriter.add(end);
for (XML_Parsable animal : employees) {
StartElement sElement = eventFactory.createStartElement("", "", Constants.XML_TAGS.EMPLOYEE);
eventWriter.add(sElement);
eventWriter.add(end);
animal.encodeToXml(eventWriter);
EndElement eElement = eventFactory.createEndElement("", "", Constants.XML_TAGS.EMPLOYEE);
eventWriter.add(eElement);
eventWriter.add(end);
}
eventWriter.add(eventFactory.createEndElement("", "", "content"));
eventWriter.add(eventFactory.createEndDocument());
eventWriter.close();
}