下面列出了怎么用javax.xml.stream.events.EndDocument的API类实例代码及写法,或者点击链接到github查看源代码。
@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()));
}
@Test
public void testEvents() {
XMLEventFactory f = XMLEventFactory.newInstance();
final String contents = "test <some> text & more! [[]] --";
final String prefix = "prefix";
final String uri = "http://foo";
final String localName = "elem";
try {
StartDocument sd = f.createStartDocument();
writeAsEncodedUnicode(sd);
Comment c = f.createComment("some comments");
writeAsEncodedUnicode(c);
StartElement se = f.createStartElement(prefix, uri, localName);
ProcessingInstruction pi = f.createProcessingInstruction("target", "data");
writeAsEncodedUnicode(pi);
Namespace ns = f.createNamespace(prefix, uri);
writeAsEncodedUnicode(ns);
Characters characters = f.createCharacters(contents);
writeAsEncodedUnicode(characters);
// CData
Characters cdata = f.createCData(contents);
writeAsEncodedUnicode(cdata);
// Attribute
QName attrName = new QName("http://test.com", "attr", "ns");
Attribute attr = f.createAttribute(attrName, "value");
writeAsEncodedUnicode(attr);
// prefix, uri, localName
EndElement ee = f.createEndElement(prefix, uri, localName);
writeAsEncodedUnicode(ee);
EndDocument ed = f.createEndDocument();
writeAsEncodedUnicode(ed);
} catch (Exception e) {
Assert.fail(e.getMessage());
}
}
@Override
public EndDocument createEndDocument() {
return defaultImpl.createEndDocument();
}
@Override
public EndDocument createEndDocument() {
return null;
}
/**
* Compares two {@link XMLEvent} instances. This method delegates actual
* matching to the appropriate overloaded method.
*
* @param a
* The first event.
* @param b
* The second event.
* @return <code>true</code> if the events match, <code>false</code>
* otherwise.
*/
public static boolean eventsMatch(XMLEvent a, XMLEvent b) {
if (a == b) {
return true;
} else if (a == null || b == null) {
return false;
} else if (a.getEventType() == b.getEventType()) {
switch (a.getEventType()) {
case XMLEvent.START_ELEMENT:
return eventsMatch(a.asStartElement(), b.asStartElement());
case XMLEvent.END_ELEMENT:
return eventsMatch(a.asEndElement(), b.asEndElement());
case XMLEvent.CDATA:
case XMLEvent.SPACE:
case XMLEvent.CHARACTERS:
return eventsMatch(a.asCharacters(), b.asCharacters());
case XMLEvent.COMMENT:
return eventsMatch((Comment) a, (Comment) b);
case XMLEvent.ENTITY_REFERENCE:
return eventsMatch((EntityReference) a, (EntityReference) b);
case XMLEvent.ATTRIBUTE:
return eventsMatch((Attribute) a, (Attribute) b);
case XMLEvent.NAMESPACE:
return eventsMatch((Namespace) a, (Namespace) b);
case XMLEvent.START_DOCUMENT:
return eventsMatch((StartDocument) a, (StartDocument) b);
case XMLEvent.END_DOCUMENT:
return eventsMatch((EndDocument) a, (EndDocument) b);
case XMLEvent.PROCESSING_INSTRUCTION:
return eventsMatch((ProcessingInstruction) a, (ProcessingInstruction) b);
case XMLEvent.DTD:
return eventsMatch((DTD) a, (DTD) b);
case XMLEvent.ENTITY_DECLARATION:
return eventsMatch((EntityDeclaration) a, (EntityDeclaration) b);
case XMLEvent.NOTATION_DECLARATION:
return eventsMatch((NotationDeclaration) a, (NotationDeclaration) b);
}
}
return false;
}