javax.xml.stream.XMLStreamReader类的使用及代码示例

x33g5p2x  于2022-02-02 转载在 其他  
字(15.2k)|赞(0)|评价(0)|浏览(246)

本文整理了Java中javax.xml.stream.XMLStreamReader类的一些代码示例,展示了XMLStreamReader类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。XMLStreamReader类的具体详情如下:
包路径:javax.xml.stream.XMLStreamReader
类名称:XMLStreamReader

XMLStreamReader介绍

[英]The XMLStreamReader interface allows forward, read-only access to XML. It is designed to be the lowest level and most efficient way to read XML data.

The XMLStreamReader is designed to iterate over XML using next() and hasNext(). The data can be accessed using methods such as getEventType(), getNamespaceURI(), getLocalName() and getText();

The next() method causes the reader to read the next parse event. The next() method returns an integer which identifies the type of event just read.

The event type can be determined using getEventType().

Parsing events are defined as the XML Declaration, a DTD, start tag, character data, white space, end tag, comment, or processing instruction. An attribute or namespace event may be encountered at the root level of a document as the result of a query operation.

For XML 1.0 compliance an XML processor must pass the identifiers of declared unparsed entities, notation declarations and their associated identifiers to the application. This information was provided through the property API on this interface. The following two properties allowed access to this information: "javax.xml.stream.notations" and "javax.xml.stream.entities". These properties are not supported in the JSR 280 subset of StAX; calls to getProperty("javax.xml.stream.notations"); or getProperty("javax.xml.stream.entities"); will always return null.

The following table describes which methods are valid in what state. If a method is called in an invalid state the method will throw a java.lang.IllegalStateException.
Valid methods for each state Event TypeValid MethodsAll States getProperty(), hasNext(), require(), close(), getNamespaceURI(), isWhiteSpace(), getEventType(),getLocation()START_ELEMENT next(), getLocalName(), getPrefix(), getAttributeXXX(), isAttributeSpecified(), getNamespaceXXX(), getElementText(), nextTag() ATTRIBUTE next(), nextTag() getAttributeXXX(), isAttributeSpecified() NAMESPACE next(), nextTag() getNamespaceXXX() END_ELEMENT next(), getLocalName(), getPrefix(), getNamespaceXXX(), nextTag() CHARACTERS next(), getTextXXX(), nextTag() CDATA next(), getTextXXX(), nextTag() COMMENT next(), getTextXXX(), nextTag() SPACE next(), getTextXXX(), nextTag() START_DOCUMENT next(), getEncoding(), getVersion(), isStandalone(), standaloneSet(), getCharacterEncodingScheme(), nextTag()END_DOCUMENT close()PROCESSING_INSTRUCTION next(), getPITarget(), getPIData(), nextTag() ENTITY_REFERENCE next(), getLocalName(), getText(), nextTag() DTD next(), getText(), nextTag()
[中]XMLStreamReader接口允许对XML进行前向只读访问。它旨在成为读取XML数据的最低级别和最有效的方式。
XMLStreamReader旨在使用next()和hasNext()对XML进行迭代。可以使用getEventType()、getNamespaceURI()、getLocalName()和getText()等方法访问数据;
next()方法使读取器读取下一个解析事件。next()方法返回一个整数,该整数标识刚刚读取的事件的类型。
可以使用getEventType()确定事件类型。
解析事件定义为XML声明、DTD、开始标记、字符数据、空白、结束标记、注释或处理指令。查询操作可能会在文档的根级别遇到属性或命名空间事件。
为了符合XML 1.0,XML处理器必须将已声明的未解析实体的标识符、符号声明及其相关标识符传递给应用程序。此信息通过此接口上的属性API提供。以下两个属性允许访问此信息:“javax.xml.stream.notations”和“javax.xml.stream.entities”。StAX的JSR 280子集不支持这些属性;对getProperty("javax.xml.stream.notations");getProperty("javax.xml.stream.entities");的呼叫将始终返回null
下表描述了在什么状态下哪些方法是有效的。如果在无效状态下调用方法,该方法将抛出java。非法国家例外。
每个状态事件类型的有效方法有效方法所有状态均为getProperty()、hasNext()、require()、close()、getNamespaceURI()、isWhiteSpace()、getEventType()、getLocation()开始元素next()、getLocalName()、getPrefix()、GetAttributeXx()、isAttributeSpecified()、getNamespaceXXX()、getElementText()、nextTag()属性next(),nextTag()getAttributeXXX(),isAttributeSpecified()NAMESPACE next(),nextTag()getNamespaceXXX()END_ELEMENT next(),getLocalName(),getPrefix(),getNamespaceXXX(),nextTag()字符next(),getTextXXX(),nextTag()注释next(),getTextXXX(),nextTag()空格next(),getTextXXX(),nextTag()开始_DOCUMENT next()、getEncoding()、getVersion()、isStandalone()、standaloneSet()、getCharacterEncodingScheme()、nextTag()结束_DOCUMENT close()处理_指令next()、getPITarget()、getPIData()、nextTag()实体_引用next()、getLocalName()、getText()、nextTag()DTD next()、getText()、nextTag()

代码示例

代码示例来源:origin: stackoverflow.com

FileInputStream fis = null;
 try {
   fis = new FileInputStream("test.xml");
   XMLInputFactory xmlInFact = XMLInputFactory.newInstance();
   XMLStreamReader reader = xmlInFact.createXMLStreamReader(fis);
   while(reader.hasNext()) {
     reader.next(); // do something here
   }
 }
 catch(IOException exc) {
 }
 catch(XMLStreamException exc) {
 }

代码示例来源:origin: pentaho/pentaho-kettle

sheetNameIDMap = new LinkedHashMap<String, String>();
workbookData = reader.getWorkbookData();
XMLInputFactory factory = XMLInputFactory.newInstance();
workbookReader = factory.createXMLStreamReader( workbookData );
while ( workbookReader.hasNext() ) {
 if ( workbookReader.next() == XMLStreamConstants.START_ELEMENT
   && workbookReader.getLocalName().equals( "sheet" ) ) {
  String sheetName = workbookReader.getAttributeValue( null, "name" );
  String sheetID = workbookReader.getAttributeValue( RELATION_NS_URI, "id" );
  sheetNameIDMap.put( sheetName, sheetID );
if ( workbookReader != null ) {
 try {
  workbookReader.close();
 } catch ( XMLStreamException e ) {
  throw new KettleException( e );
  workbookData.close();
 } catch ( IOException e ) {
  throw new KettleException( e );

代码示例来源:origin: spring-projects/spring-framework

@Test
public void unmarshalPartialStaxSourceXmlStreamReader() throws Exception {
  XMLInputFactory inputFactory = XMLInputFactory.newInstance();
  XMLStreamReader streamReader = inputFactory.createXMLStreamReader(new StringReader(INPUT_STRING));
  streamReader.nextTag(); // skip to flights
  assertEquals("Invalid element", new QName("http://samples.springframework.org/flight", "flights"),
      streamReader.getName());
  streamReader.nextTag(); // skip to flight
  assertEquals("Invalid element", new QName("http://samples.springframework.org/flight", "flight"),
      streamReader.getName());
  Source source = StaxUtils.createStaxSource(streamReader);
  Object flight = unmarshaller.unmarshal(source);
  testFlight(flight);
}

代码示例来源:origin: spring-projects/spring-framework

private int moveToNextElement(XMLStreamReader streamReader) throws XMLStreamException {
  int event = streamReader.getEventType();
  while (event != XMLStreamReader.START_ELEMENT && event != XMLStreamReader.END_DOCUMENT) {
    event = streamReader.next();
  }
  return event;
}

代码示例来源:origin: spring-projects/spring-framework

private Attributes getAttributes() {
  AttributesImpl attributes = new AttributesImpl();
  for (int i = 0; i < this.reader.getAttributeCount(); i++) {
    String namespace = this.reader.getAttributeNamespace(i);
    if (namespace == null || !hasNamespacesFeature()) {
      namespace = "";
    }
    String type = this.reader.getAttributeType(i);
    if (type == null) {
      type = "CDATA";
    }
    attributes.addAttribute(namespace, this.reader.getAttributeLocalName(i),
        toQualifiedName(this.reader.getAttributeName(i)), type, this.reader.getAttributeValue(i));
  }
  if (hasNamespacePrefixesFeature()) {
    for (int i = 0; i < this.reader.getNamespaceCount(); i++) {
      String prefix = this.reader.getNamespacePrefix(i);
      String namespaceUri = this.reader.getNamespaceURI(i);
      String qName;
      if (StringUtils.hasLength(prefix)) {
        qName = "xmlns:" + prefix;
      }
      else {
        qName = "xmlns";
      }
      attributes.addAttribute("", "", qName, "CDATA", namespaceUri);
    }
  }
  return attributes;
}

代码示例来源:origin: geotools/geotools

int count = input.read(b);
if (count < 3) {
  return FileFormat.NONE;
try {
  streamSource = new StreamSource(input);
  XMLInputFactory inputFactory = XMLInputFactory.newInstance();
  reader = inputFactory.createXMLStreamReader(streamSource);
  reader.nextTag();
  if ("netcdf".equals(reader.getName().getLocalPart())) {
    return FileFormat.NCML;
  if ("featureCollection".equals(reader.getName().getLocalPart())) {
    return FileFormat.FC;
    input.close();
      streamSource.getInputStream().close();
      reader.close();
    } catch (XMLStreamException e) {

代码示例来源:origin: apache/karaf

private QName getRootElementName(File artifact) throws Exception {
  if (xif == null) {
    xif = XMLInputFactory.newFactory();
    xif.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);
  }
  try (InputStream is = new FileInputStream(artifact)) {
    XMLStreamReader sr = xif.createXMLStreamReader(is);
    sr.nextTag();
    return sr.getName();
  }
}

代码示例来源:origin: wildfly/wildfly

boolean managedBeanClass = false;
while (true) {
  int event = parser.next();
  if (event == XMLStreamConstants.END_DOCUMENT) {
    parser.close();
    break;
    indent++;
    if (indent == 2) {
      if (parser.getLocalName().equals(MANAGED_BEAN)) {
        managedBean = true;
      if (parser.getLocalName().equals(MANAGED_BEAN_CLASS)) {
        managedBeanClass = true;
        className = new StringBuilder();
    className.append(parser.getText());
try {
  if (is != null) {
    is.close();

代码示例来源:origin: stackoverflow.com

import java.io.FileInputStream;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;

public class Demo {

  public static void main(String[] args) throws Exception {
    JAXBContext context = JAXBContext.newInstance(Categories.class);

    XMLInputFactory xif = XMLInputFactory.newInstance();
    FileInputStream fis = new FileInputStream("input.xml");
    XMLStreamReader xsr = xif.createXMLStreamReader(fis);
    xsr.nextTag();
    String noNamespaceSchemaLocation = xsr.getAttributeValue(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "noNamespaceSchemaLocation");
    System.out.println(noNamespaceSchemaLocation);

    Unmarshaller um = context.createUnmarshaller();
    Categories response = (Categories) um.unmarshal(xsr);
  }
}

代码示例来源:origin: org.apache.xmlbeans/xmlbeans

final XMLInputFactory xmlInputFactory = StaxHelper.newXMLInputFactory(new XmlOptionsBean(options));
final FileInputStream fis = new FileInputStream(file);
final XMLStreamReader rdr =
    xmlInputFactory.createXMLStreamReader(path, fis);
while(!rdr.isStartElement()) {
  rdr.next();
fis.close();
final Location loc = xse.getLocation();
XmlError e = XmlError.forLocation(xse.getMessage(), path,
                 loc.getLineNumber(),
                 loc.getColumnNumber(),

代码示例来源:origin: wmixvideo/nfe

final java.lang.String namespaceuri = "";
try {
  while (!reader.isStartElement() && !reader.isEndElement()) {
    reader.next();
  final java.util.Vector handledAttributes = new java.util.Vector();
  while (!reader.isEndElement()) {
    if (reader.isStartElement()) {
      if (reader.isStartElement() && new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/nfe/wsdl/NfeStatusServico2", "nfeCabecMsg").equals(reader.getName())) {
        object.setNfeCabecMsg(NfeCabecMsg.Factory.parse(reader));
        throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getName());
      reader.next();

代码示例来源:origin: stackoverflow.com

XMLInputFactory inputFactory = XMLInputFactory.newInstance();
InputStream in = new FileInputStream("book.xml");
XMLStreamReader streamReader = inputFactory.createXMLStreamReader(in);
streamReader.nextTag(); // Advance to "book" element
streamReader.nextTag(); // Advance to "person" element
while (streamReader.hasNext()) {
  if (streamReader.isStartElement()) {
    switch (streamReader.getLocalName()) {
    case "first": {
      System.out.print("First Name : ");
      System.out.println(streamReader.getElementText());
      break;
      System.out.println(streamReader.getElementText());
      break;
      System.out.println(streamReader.getElementText());
      break;
  streamReader.next();

代码示例来源:origin: stackoverflow.com

InputStream is = new FileInputStream("...");
XMLInputFactory xif = XMLInputFactory.newFactory();
XMLStreamReader xsr = xif.createXMLStreamReader(is);
while (xsr.hasNext()) {
 if (xsr.next() == XMLStreamConstants.START_ELEMENT
   && xsr.getLocalName().equals("dad")) {

  if (xsr.next() == XMLStreamConstants.CHARACTERS)
   System.out.println(xsr.getText());
 }
}

代码示例来源:origin: pentaho/pentaho-kettle

private void resetSheetReader() throws IOException, XMLStreamException, InvalidFormatException {
 sheetReader.close();
 sheetStream.close();
 sheetStream = xssfReader.getSheet( sheetId );
 XMLInputFactory factory = XMLInputFactory.newInstance();
 sheetReader = factory.createXMLStreamReader( sheetStream );
}

代码示例来源:origin: pentaho/pentaho-kettle

public void close() throws IOException, XMLStreamException {
  sheetReader.close();
  sheetStream.close();
 }
}

代码示例来源:origin: mirkonasato/graphipedia

private void parse(InputStream inputStream) throws IOException, XMLStreamException {
  XMLStreamReader reader = XML_INPUT_FACTORY.createXMLStreamReader(inputStream, "UTF-8");
  try {
    parseElements(reader);
  } finally {
    reader.close();
    inputStream.close();
  }
}

代码示例来源:origin: foxinmy/weixin4j

XMLStreamWriter xw = null;
try {
  xr = XMLInputFactory.newInstance().createXMLStreamReader(
      new StringReader(content));
  List<Pattern> patterns = new ArrayList<Pattern>();
  for (String pattern : matchPattern) {
  Map<String, Map<String, String>> outMap = new HashMap<String, Map<String, String>>();
  while (true) {
    int event = xr.next();
    if (event == XMLStreamConstants.END_DOCUMENT) {
      break;
    } else if (event == XMLStreamConstants.START_ELEMENT) {
      String name = xr.getLocalName();
      for (Pattern pattern : patterns) {
        if ((matcher = pattern.matcher(name)).find()) {
          while (true) {
            event = xr.next();
            if (event == XMLStreamConstants.START_ELEMENT) {
              name = xr.getLocalName();
            } else if (event == XMLStreamConstants.END_ELEMENT) {
              break;
                  xr.getText());
      xr.close();

代码示例来源:origin: org.teiid/teiid-client

public static PlanNode fromXml(String planString) throws XMLStreamException {
  XMLInputFactory inputFactory = XMLType.getXmlInputFactory();
  XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(planString));
  while (reader.hasNext()&& (reader.nextTag() != XMLStreamConstants.END_ELEMENT)) {
    String element = reader.getLocalName();
    if (element.equals("node")) { //$NON-NLS-1$
      Properties props = getAttributes(reader);
      PlanNode planNode = new PlanNode(props.getProperty("name"));//$NON-NLS-1$
      planNode.setParent(null);
      buildNode(reader, planNode);
      return planNode;
    }
    throw new XMLStreamException(JDBCPlugin.Util.gs("unexpected_element", reader.getName(), "node"),reader.getLocation());//$NON-NLS-1$ //$NON-NLS-2$
  }
  return null;
}

代码示例来源:origin: stackoverflow.com

XMLInputFactory xif = XMLInputFactory.newInstance();
 StreamSource xml = new StreamSource(new StringReader(response.toString()));
 XMLStreamReader xsr = xif.createXMLStreamReader(xml);
 // Advance to the "Customer" elements
 while (xsr.hasNext()) {
   if (xsr.isStartElement() && "customer".equals(xsr.getLocalName())) {
     // Unmarshal to Customer
     JAXBContext jc = JAXBContext.newInstance(Customer.class);
     Unmarshaller unmarshaller = jc.createUnmarshaller();
     Customer customer = unmarshaller.unmarshal(xsr, Customer.class).getValue();
     customers.add();
   }
   xsr.next();
  }

代码示例来源:origin: pentaho/pentaho-kettle

for ( int event = vReader.next(); vReader.hasNext(); event = vReader.next() ) {
 switch ( event ) {
  case XMLStreamConstants.START_ELEMENT:
    logRowlevel( "START_ELEMENT / " + vReader.getAttributeCount() + " / " + vReader.getNamespaceCount() );
    logRowlevel( "vReader.getLocalName = " + vReader.getLocalName() );
     WebServiceField field = meta.getFieldOutFromWsName( vReader.getLocalName(), ignoreNamespacePrefix );
     if ( field != null ) {
      outputRowData[ outputIndex++ ] = getValue( vReader.getElementText(), field );
      putRow( data.outputRowMeta, outputRowData );
      oneValueRowProcessing = false;
     } else {
      if ( meta.getOutFieldContainerName().equals( vReader.getLocalName() ) ) {
    if ( meta.getOutFieldArgumentName().equals( vReader.getLocalName() ) ) {
     if ( log.isRowLevel() ) {
      logRowlevel( "vReader.getLocalName = " + vReader.getLocalName() );
       meta.getFieldOutFromWsName( vReader.getLocalName(), ignoreNamespacePrefix );
      if ( field != null ) {
       int index = data.outputRowMeta.indexOfValue( field.getName() );
       if ( index >= 0 ) {
        outputRowData[ index ] = getValue( vReader.getElementText(), field );
     } else {
      WebServiceField field =
       meta.getFieldOutFromWsName( vReader.getLocalName(), ignoreNamespacePrefix );

相关文章

微信公众号

最新文章

更多