查看the Saxon documentation,命令行上有一个“-x:className”标志,用于指定在应用XSLT期间使用的特定SAX解析器.

如何以编程方式实现此目标?我现在正在我的代码中使用s9api,我检查了Processor,XsltCompiler,XsltExecutable和XsltTransformer对象;他们都没有办法设置SAX解析器.我还实例化了一个net.sf.saxon.Transform,它也没有任何东西.

我很可能正在查看错误的对象集,但我不知道我应该怎么知道正确的集合是什么.

命令行文档链接到上面提到的“为源文件使用指定的SAX解析器和使用document()函数加载的任何文件.”我敢肯定,如果我知道自己在做什么,那么提及“document()”函数会立刻引起我的注意.不幸的是,我没有,也没有.

编辑:迈克尔凯的答案是正确的. (当然是!他是撒克逊家伙!)我想我会为后代添加一些示例代码.

首先,他的解决方案使用net.sf.saxon.s9api.Processor:

Processor processor = new Processor(false);

processor.setConfigurationProperty(FeatureKeys.SOURCE_PARSER_CLASS,

"fully.qualified.package.name.of.MySAXParser");

在上面,重要的是为它提供SAXParser的完全限定名称(而不仅仅是类名)作为String.如果您执行以下操作:

processor.setConfigurationProperty(FeatureKeys.SOURCE_PARSER_CLASS,

new MySAXParser());

……你会得到这个:

java.lang.IllegalArgumentException: SOURCE_PARSER_CLASS class must be a String

其次,他的解决方案使用net.sf.saxon.s9api.XsltTransformer:

// ^^^ Various setup code to get to this point...

XsltTransformer transformer = xsltExecutable.load();

File file = new File("/path/to/my/file");

InputStream fileInputStream = new FileInputStream(file);

InputSource inputSource = new InputSource(fileInputStream);

Source saxSource = new SAXSource(new MySAXParser(), inputSource);

transformer.setSource(saxSource);

// vvv Set other parameters, actually invoke the transform, etc...

我唯一的问题/警告是:

1.)在控制台中打印以下消息:

Cannot find CatalogManager.properties

这似乎没有任何影响,因为转换仍然可以正常工作,我很确定它与Saxon本身没有任何关系,而是我在自定义SAXParser的实现中搞乱了.

2.)如果我想转换非XML文档(是的,它完全可能)我不能使用解决方案#2,因为调用XsltTransform.setSource()会导致它默认将源视为XML文档,并且会给你可怕的

Error on line 1 column 1

SXXP0003: Error reported by XML parser: Content is not allowed in prolog.

因此,要转换非XML文档,必须使用“粗粒度”处理器解决方案.

解决方法:

如果您想确保获得Saxon问题的答案,请使用dev.saxonica.com上的Saxon论坛或SourceForge上的saxon-help列表.

答案是:你可以使用

Processor.setConfigurationProperty(

FeatureKeys.SOURCE_PARSER_CLASS, parserClassName)

但是,这可能有点粗糙:它在命令行上工作,因为配置通常只是为了转换一个文档.为了更好地控制,您始终可以以SAXSource对象的形式为转换提供输入,该对象包含XMLReader,它表示您要使用的SAX解析器的实例.

标签:java,saxon,saxparser

来源: https://codeday.me/bug/20190709/1414704.html

java saxon,Saxon in Java:指定SAX Parser相关推荐

  1. Java XML分析技术: StAX, SAX, DOM, DOM4j, JDOM

    Java 6.0对XML支持的新特性有许多方面.比如StAX.针对XML-Web服务的Java架构(JAX-WS)2.0.针对XML绑定的API(JAXB)2.0.XML数字签名API,甚至还支持SQ ...

  2. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    http://blog.csdn.net/smcwwh/article/details/7183869 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath ...

  3. Java解析XML(DOM解析和SAX解析)

    前言:在程序中访问和操作XML文件一般有两种模型:DOM(文档对象模型)和流模型:在本篇文章中分别对应DOM解析和SAX解析. 目录 1 .DOM解析与SAX解析的相关知识点 1.1 DOM 1.2 ...

  4. 【Groovy】Groovy 动态语言特性 ( Groovy 中的变量自动类型推断以及动态调用 | Java 中必须为变量指定其类型 )

    文章目录 前言 一.Groovy 动态语言 二.Groovy 中的变量自动类型推断及动态调用 三.Java 中必须为变量指定其类型 前言 Groovy 是动态语言 , Java 是静态语言 ; 一.G ...

  5. sqlite命令行查看数据显示列头、java访问sqlite、java命令指定classpath

    sqlite3附加数据库:attach database; 看一下表的数据: 查看表架构:.schema tablename:以前这命令都没问题,能显示表结构,但这次显示不出,也没提示出错: 使用 s ...

  6. 9.JAVA之GUI编程列出指定目录内容

    代码如下: /*列出指定目录内容*/ import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import ...

  7. Java删除properties配置文件中指定键值的代码

    将开发过程较好的一些内容片段记录起来,下面的内容段是关于Java删除properties配置文件中指定键值的内容. public static boolean deleteKeyValue4Pro(S ...

  8. java文件名大小_java 比较指定文件夹内.txt文件名的大小

    我写了一个程序:每过一定时间向指定文件夹内写一个按时间命名的.txt文件现在想实现最新的txt文件和最原先的txt文件内容比对但是不知道如何获得这两个文家的内容.packagetest;import. ...

  9. java安装jdk错误1316 指定的账户已存在

    java安装jdk错误1316 指定的账户已存在 处理步骤: 1.卸载jdk,成功后重启 2.删除注册表中文件夹 (1)\HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft文件夹 ...

最新文章

  1. linux 将当前时间往后调整2分钟_自动调整linux系统时间和时区与Internet时间同步...
  2. 【指标统计】指标统计相关配置项及说明
  3. tf13: 简单聊天机器人
  4. HDU 2017 字符串统计
  5. 学python后到底能干什么-学Python后到底能干什么
  6. 自动驾驶 8-1: 平方误差准则和最小二乘法 (上) Squared Error Criterion and the Method of Least Squares (Part 1)
  7. HDU1564 Play a game
  8. java 面试宝典总结
  9. 脚本语言和编程语言的比较
  10. 袖珍计算机英语手册,英语袖珍迷你系列-中考英语速记手册.pdf
  11. 关于SSDP协议的基础知识
  12. modbus协议的认识和libmodbus库使用
  13. 通过phpstudy(小皮面板)搭建DVWA靶场教程
  14. win10 软路由_超小软路由Nanopi R2S折腾记
  15. 根据html代码生成word文件
  16. CSS实现中英双语导航栏——利用块级元素隐藏实现
  17. MPLAB X IDE调试代码
  18. 给开源社读者的一份信
  19. Velocity最简易的Servlet加载
  20. 刚高考完有些迷茫不知道做些什么?谈一谈我的看法

热门文章

  1. “应用自动启动”和“关联启动”权限
  2. 【Storybook】Storybook在React中的使用
  3. 浏览器端 调用百度api定位
  4. 中国山泉水行业营销态势与盈利能力预测报告(新版)2022-2027年
  5. 开发者必须知道的HTML5十五大新特性
  6. 调用libcurl获取https的url文件的大小
  7. 【HTML】段落开始空两格
  8. 如何看大盘和个股走势图
  9. 一款神奇的书法软件:Ougishi Lite
  10. ssm+java计算机毕业设计基于web的食堂采购管理的设计与实现q0kag(程序+lw+源码+远程部署)