javax.xml.parsers.SAXParser类的使用及代码示例

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

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

SAXParser介绍

[英]Defines the API that wraps an org.xml.sax.XMLReaderimplementation class. In JAXP 1.0, this class wrapped the org.xml.sax.Parser interface, however this interface was replaced by the org.xml.sax.XMLReader. For ease of transition, this class continues to support the same name and interface as well as supporting new methods. An instance of this class can be obtained from the javax.xml.parsers.SAXParserFactory#newSAXParser() method. Once an instance of this class is obtained, XML can be parsed from a variety of input sources. These input sources are InputStreams, Files, URLs, and SAX InputSources.

This static method creates a new factory instance based on a system property setting or uses the platform default if no property has been defined.

The system property that controls which Factory implementation to create is named "javax.xml.parsers.SAXParserFactory". This property names a class that is a concrete subclass of this abstract class. If no property is defined, a platform default will be used.
As the content is parsed by the underlying parser, methods of the given org.xml.sax.HandlerBase or the org.xml.sax.helpers.DefaultHandler are called.

Implementations of this class which wrap an underlying implementation can consider using the org.xml.sax.helpers.ParserAdapterclass to initially adapt their SAX1 implementation to work under this revised class.
[中]定义包装组织的API。xml。萨克斯。XMLReaderimplementation类。在JAXP 1.0中,这个类包装了组织。xml。萨克斯。解析器接口,但是这个接口被org所取代。xml。萨克斯。XMLReader。为了便于转换,该类继续支持相同的名称和接口,并支持新方法。这个类的一个实例可以从javax中获得。xml。解析器。SAXParserFactory#newSAXParser()方法。一旦获得此类的实例,就可以从各种输入源解析XML。这些输入源是InputStreams、文件、URL和SAX输入源。
此静态方法基于系统属性设置创建新的factory实例,如果未定义属性,则使用平台默认值。
控制要创建哪个工厂实现的系统属性名为[$0$]。该属性命名一个类,该类是该抽象类的一个具体子类。如果未定义属性,将使用平台默认值。
当底层解析器解析内容时,给定组织的。xml。萨克斯。HandlerBase或组织。xml。萨克斯。帮手。调用DefaultHandler。
这种封装底层实现的类的实现可以考虑使用ORG。xml。萨克斯。帮手。ParserAdapterclass最初对SAX1实现进行了调整,使其能够在这个修改后的类下工作。

代码示例

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

SAXParserFactory factory = SAXParserFactory.newInstance();
 factory.setValidating(true);
 try {
   SAXParser saxParser = factory.newSAXParser();
   File file = new File("test.xml");
   saxParser.parse(file, new ElementHandler());    // specify handler
 }
 catch(ParserConfigurationException e1) {
 }
 catch(SAXException e1) {
 }
 catch(IOException e) {
 }

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

class RetrieveFeedTask extends AsyncTask<String, Void, RSSFeed> {

  private Exception exception;

  protected RSSFeed doInBackground(String... urls) {
    try {
      URL url = new URL(urls[0]);
      SAXParserFactory factory = SAXParserFactory.newInstance();
      SAXParser parser = factory.newSAXParser();
      XMLReader xmlreader = parser.getXMLReader();
      RssHandler theRSSHandler = new RssHandler();
      xmlreader.setContentHandler(theRSSHandler);
      InputSource is = new InputSource(url.openStream());
      xmlreader.parse(is);

      return theRSSHandler.getFeed();
    } catch (Exception e) {
      this.exception = e;

      return null;
    }
  }

  protected void onPostExecute(RSSFeed feed) {
    // TODO: check this.exception
    // TODO: do something with the feed
  }
}

代码示例来源:origin: plutext/docx4j

/**
 * Indents the given XML String.
 *
 * @param r A reader on XML data
 * @param w A writer for the indented XML
 *
 * @throws IOException If an IOException occurs.
 * @throws SAXException If the XML is not well-formed.
 * @throws ParserConfigurationException If the parser could not be configured
 */
public static void indent(Reader r, Writer w)
  throws SAXException, IOException, ParserConfigurationException {
 // create the indenter
 XMLIndenter indenter = new XMLIndenter(w);
 // initialise the SAX framework
 SAXParserFactory factory = SAXParserFactory.newInstance();
 factory.setNamespaceAware(false);
 factory.setValidating(false);
 InputSource source = new InputSource(r);
 // parse the XML
 SAXParser parser = factory.newSAXParser();
 parser.setProperty("http://xml.org/sax/features/external-general-entities", false);
 parser.setProperty("http://xml.org/sax/features/external-parameter-entities", false);
 parser.setProperty("http://apache.org/xml/features/disallow-doctype-decl", true);
 
 XMLReader xmlreader = parser.getXMLReader();
 xmlreader.setContentHandler(indenter);
 xmlreader.parse(source);
}

代码示例来源:origin: languagetool-org/languagetool

public final List<BitextPatternRule> getRules(InputStream is, String filename) throws IOException {
 List<BitextPatternRule> rules;
 try {
  BitextPatternRuleHandler handler = new BitextPatternRuleHandler();
  SAXParserFactory factory = SAXParserFactory.newInstance();
  SAXParser saxParser = factory.newSAXParser();
  saxParser.getXMLReader().setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
  saxParser.parse(is, handler);
  rules = handler.getBitextRules();
  return rules;
 } catch (Exception e) {
  throw new IOException("Cannot load or parse '" + filename + "'", e);
 }
}

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

String targetNamespace,
  String schemaLocation) {
InputSource in = new InputSource(xml);
  SAXParserFactory sf = SAXParserFactory.newInstance();
  sf.setNamespaceAware(true);
  sf.setValidating(true);
  SAXParser parser = sf.newSAXParser();
  parser.setProperty(
      "http://java.sun.com/xml/jaxp/properties/schemaLanguage",
      "http://www.w3.org/2001/XMLSchema");
    parser.setProperty(
        "http://java.sun.com/xml/jaxp/properties/schemaSource", schemaLocation);
  parser.parse(in, errorHandler);

代码示例来源:origin: alibaba/easyexcel

private void parseXmlSource(InputStream inputStream) {
  InputSource sheetSource = new InputSource(inputStream);
  try {
    SAXParserFactory saxFactory = SAXParserFactory.newInstance();
    saxFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
    saxFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
    saxFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
    SAXParser saxParser = saxFactory.newSAXParser();
    XMLReader xmlReader = saxParser.getXMLReader();
    ContentHandler handler = new XlsxRowHandler(this, sharedStringsTable, analysisContext);
    xmlReader.setContentHandler(handler);
    xmlReader.parse(sheetSource);
    inputStream.close();
  } catch (Exception e) {
    e.printStackTrace();
    throw new ExcelAnalysisException(e);
  }
}

代码示例来源:origin: cmusphinx/sphinx4

protected void loadXML() throws IOException {
  try {
    SAXParserFactory factory = SAXParserFactory.newInstance();
    XMLReader xr = factory.newSAXParser().getXMLReader();
    rules = new HashMap<String, JSGFRule>();
    GrXMLHandler handler = new GrXMLHandler(baseURL, rules, logger);
    xr.setContentHandler(handler);
    xr.setErrorHandler(handler);
    InputStream is = baseURL.openStream();
    xr.parse(new InputSource(is));
    is.close();
  } catch (SAXParseException e) {
    String msg = "Error while parsing line " + e.getLineNumber() + " of " + baseURL + ": " + e.getMessage();
    throw new IOException(msg);
  } catch (SAXException e) {
    throw new IOException("Problem with XML: " + e);
  } catch (ParserConfigurationException e) {
    throw new IOException(e.getMessage());
  }
  return;
}

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

isource = SAXSource.sourceToInputSource(source);
baseID = isource.getSystemId();
   javax.xml.parsers.SAXParserFactory.newInstance();
  factory.setNamespaceAware(true);
    factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
  javax.xml.parsers.SAXParser jaxpParser = factory.newSAXParser();
  reader = jaxpParser.getXMLReader();
  throw new org.xml.sax.SAXException(ex);
  throw new org.xml.sax.SAXException(ex1.toString());
 reader.setContentHandler(handler);
 reader.parse(isource);

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

/**
 * Create new {@link javax.xml.transform.sax.SAXSource} for a given entity input stream.
 *
 * @param spf          SAX parser factory to be used to create the SAX source.
 * @param entityStream entity input stream.
 * @return new {@link javax.xml.transform.sax.SAXSource} representing the entity input stream.
 * @throws JAXBException in case SAX source creation fails.
 */
protected static SAXSource getSAXSource(SAXParserFactory spf, InputStream entityStream) throws JAXBException {
  try {
    return new SAXSource(spf.newSAXParser().getXMLReader(), new InputSource(entityStream));
  } catch (Exception ex) {
    throw new JAXBException("Error creating SAXSource", ex);
  }
}

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

SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);

SAXParser parser = factory.newSAXParser();

XMLReader reader = parser.getXMLReader();
reader.setErrorHandler(new SimpleErrorHandler());
reader.parse(new InputSource(new FileReader ("document.xml")));

代码示例来源:origin: org.freemarker/freemarker

private static void parseXml(InputStream in, String systemId, DefaultHandler handler)
    throws SAXException, IOException {
  InputSource inSrc = new InputSource();
  inSrc.setSystemId(systemId);
  inSrc.setByteStream(toCloseIgnoring(in));
  
  SAXParserFactory factory = SAXParserFactory.newInstance();
  factory.setNamespaceAware(false);
  factory.setValidating(false); // Especially as we use dummy empty DTD-s
  XMLReader reader;
  try {
    reader = factory.newSAXParser().getXMLReader();
  } catch (ParserConfigurationException e) {
    // Not expected
    throw new RuntimeException("XML parser setup failed", e);
  }
  reader.setEntityResolver(new EmptyContentEntityResolver()); // To deal with referred DTD-s
  reader.setContentHandler(handler);
  reader.setErrorHandler(handler);
  
  reader.parse(inSrc);
}

代码示例来源:origin: cmusphinx/sphinx4

/**
   * Loads a set of configuration data from the location
   *
   * @return a map keyed by component name containing RawPropertyData objects
   * @throws IOException if an I/O or parse error occurs
   */
  public Map<String, RawPropertyData> load() throws IOException {
    try {
      SAXParserFactory factory = SAXParserFactory.newInstance();
      XMLReader xr = factory.newSAXParser().getXMLReader();
      ConfigHandler handler = new ConfigHandler(rpdMap, globalProperties, replaceDuplicates, url);
      xr.setContentHandler(handler);
      xr.parse(url.toString());
    } catch (SAXParseException e) {
      String msg = "Error while parsing line " + e.getLineNumber() + " of " + url + ": " + e.getMessage();
      throw new IOException(msg);
    } catch (SAXException e) {
      throw new IOException("Problem with XML: " + e);
    } catch (ParserConfigurationException e) {
      throw new IOException(e.getMessage());
    }

    return rpdMap;
  }
}

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

private Source getSource(final InputStream is, final Resource resource)
  throws ParserConfigurationException, SAXException {
  // todo: is this comment still relevant ??
  // FIXME: need to use a SAXSource as the source for the transform
  // so we can plug in our own entity resolver
  Source src = null;
  if (entityResolver != null) {
    if (getFactory().getFeature(SAXSource.FEATURE)) {
      final SAXParserFactory spFactory = SAXParserFactory.newInstance();
      spFactory.setNamespaceAware(true);
      final XMLReader reader = spFactory.newSAXParser().getXMLReader();
      reader.setEntityResolver(entityResolver);
      src = new SAXSource(reader, new InputSource(is));
    } else {
      throw new IllegalStateException("xcatalog specified, but "
        + "parser doesn't support SAX");
    }
  } else {
    // WARN: Don't use the StreamSource(File) ctor. It won't work with
    // xalan prior to 2.2 because of systemid bugs.
    src = new StreamSource(is);
  }
  // The line below is a hack: the system id must an URI, but it is not
  // cleat to get the URI of an resource, so just set the name of the
  // resource as a system id
  src.setSystemId(resourceToURI(resource));
  return src;
}

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

@Override
  public void writeTo(Source source, Class<?> t, Type gt, Annotation[] as, MediaType mediaType,
      MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException {
    try {
      if (source instanceof StreamSource) {
        StreamSource stream = (StreamSource) source;
        InputSource inputStream = new InputSource(stream.getInputStream());
        inputStream.setCharacterStream(inputStream.getCharacterStream());
        inputStream.setPublicId(stream.getPublicId());
        inputStream.setSystemId(source.getSystemId());
        source = new SAXSource(saxParserFactory.get().newSAXParser().getXMLReader(), inputStream);
      }
      StreamResult sr = new StreamResult(entityStream);
      transformerFactory.get().newTransformer().transform(source, sr);
    } catch (SAXException ex) {
      throw new InternalServerErrorException(ex);
    } catch (ParserConfigurationException ex) {
      throw new InternalServerErrorException(ex);
    } catch (TransformerException ex) {
      throw new InternalServerErrorException(ex);
    }
  }
}

代码示例来源:origin: jeremylong/DependencyCheck

final SuppressionHandler handler = new SuppressionHandler();
  final SAXParser saxParser = XmlUtils.buildSecureSaxParser(schemaStream12, schemaStream11, schemaStream10);
  final XMLReader xmlReader = saxParser.getXMLReader();
  xmlReader.setErrorHandler(new SuppressionErrorHandler());
  xmlReader.setContentHandler(handler);
  try (Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) {
    final InputSource in = new InputSource(reader);
    xmlReader.parse(in);
    return handler.getSuppressionRules();
  throw new SuppressionParseException(ex);
} catch (SAXException ex) {
  if (ex.getMessage().contains("Cannot find the declaration of element 'suppressions'.")) {
    throw ex;
  } else {

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

InputSource isource = SAXSource.sourceToInputSource(source);
isource.setSystemId(baseID);
XMLReader reader = null;
 reader = ((SAXSource) source).getXMLReader();
   javax.xml.parsers.SAXParserFactory.newInstance();
  factory.setNamespaceAware(true);
    factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
  javax.xml.parsers.SAXParser jaxpParser = factory.newSAXParser();
  reader = jaxpParser.getXMLReader();
  throw new org.xml.sax.SAXException(ex);
  throw new org.xml.sax.SAXException(ex1.toString());
reader.setContentHandler(builder);
reader.parse(isource);
 throw new TransformerConfigurationException(se.getMessage(), se);

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

javax.xml.parsers.SAXParserFactory.newInstance();
   factory.setNamespaceAware( true );
       factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
     factory.newSAXParser();
   reader=jaxpParser.getXMLReader();
   throw new org.xml.sax.SAXException( ex );
 } catch( javax.xml.parsers.FactoryConfigurationError ex1 ) {
   throw new org.xml.sax.SAXException( ex1.toString() );
 } catch( NoSuchMethodError ex2 ) {
 try
  parent.setFeature("http://xml.org/sax/features/namespace-prefixes",
           true);
 throw new org.xml.sax.SAXException(XSLMessages.createMessage(XSLTErrorResources.ER_CANNOT_CALL_PARSE, null)); //"parse can not be called if the ContentHandler has not been set!");
getParent().parse(input);
Exception e = m_transformer.getExceptionThrown();
if(null != e)

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

? ((SAXSource) inputSource).getXMLReader() : null;
    javax.xml.parsers.SAXParserFactory.newInstance();
  factory.setNamespaceAware( true );
  javax.xml.parsers.SAXParser jaxpParser=
    factory.newSAXParser();
  reader=jaxpParser.getXMLReader();
  throw new org.xml.sax.SAXException( ex );
 } catch( javax.xml.parsers.FactoryConfigurationError ex1 ) {
   throw new org.xml.sax.SAXException( ex1.toString() );
 } catch( NoSuchMethodError ex2 ) {
 reader.setFeature("http://xml.org/sax/features/namespace-prefixes",
          true);
throw new TransformerException(se.getMessage(), locator, se);

代码示例来源:origin: liyiorg/weixin-popular

SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setFeature("http://xml.org/sax/features/external-general-entities", false);
spf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
spf.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
Source xmlSource = new SAXSource(spf.newSAXParser().getXMLReader(), new InputSource(reader));
Unmarshaller unmarshaller = JAXB_CONTEXT_MAP.get(clazz).createUnmarshaller();
return (T) unmarshaller.unmarshal(xmlSource);

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

try
{
  HttpEntity entity = response.getEntity();
  final InputStream in = entity.getContent();
  final SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
  final XmlHandler handler = new XmlHandler();
  Reader reader = new InputStreamReader(in, "UTF-8");
  InputSource is = new InputSource(reader);
  is.setEncoding("UTF-8");
  parser.parse(is, handler);
  //TODO: get the data from your handler
}
catch (final Exception e)
{
  Log.e("ParseError", "Error parsing xml", e);
}

相关文章