问题标签 [jaxp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1569 浏览

java - Transformer 的变换导致致命错误,为什么?

我已经使用 JAXP 构建了一个文档,如下所示:

现在,当我尝试像这样输出文档的 XML 时:

transformer.transform它因以下错误而分崩离析:

我该如何调试呢?我已经确定了transformersource并且result不为空。

0 投票
1 回答
974 浏览

java - JSF 2.0 和 TransformerFactory

我将在我的 JSF 2.0 项目中使用 Saxon-B 9。但是在添加对 Saxon & Saxon-dom 的依赖后,启动时开始出现异常:

2010 年 9 月 25 日下午 6:05:45 com.google.apphosting.utils.jetty.JettyLogger 信息信息:通过 com.google.apphosting.utils.jetty.JettyLogger 登录到 JettyLogger(null) 2010 年 9 月 25 日 6:05: 45 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml 信息:成功处理 /home/chardex/projects/metabus/trunk/clients/export/target/articats/export_exploded/WEB-INF/appengine-web.xml Sep 25 , 2010 年 6:05:45 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml 信息:成功处理 /home/chardex/projects/metabus/trunk/clients/export/target/articats/export_exploded/WEB-INF/web .xml 2010 年 9 月 25 日下午 6:05:45 com.google.apphosting.utils.jetty.JettyLogger 信息信息:jetty-6.1.x 2010 年 9 月 25 日下午 6:05:46 com.sun.faces.config.ConfigureListener上下文初始化信息:为上下文“初始化 Mojarra 2.0.0 (RC2 b22)”2010 年 9 月 25 日下午 6:05:48 com.sun.faces.config.ConfigManager 初始化信息:未清理的堆栈跟踪来自失败的启动... > com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: net.sf.saxon.dom.NodeWrapper$ChildEnumeration.isAtomizing()Z 在 com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:670) 在 com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:306) 在 com.sun.faces.config.ConfigureListener.contextInitialized (ConfigureListener.java:219) 在 org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:548) 在 org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 在 org.mortbay。 jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250) 在 org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) 在 org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java: 467) 在 org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 在 org.mortbay.org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)。component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org .mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) 在 com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:185) 在 com.google.appengine.tools.development.AbstractContainerService.startup (AbstractContainerService.java:147) 在 com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:219) 在 com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:164 ) 在 com.google.appengine.tools.development 的 com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:48)。DevAppServerMain.(DevAppServerMain.java:113) 在 com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:89) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:616) 在 com.intellij.rt.execution.application。 AppMain.main(AppMain.java:115) 引起:java.util.concurrent.ExecutionException: java.lang.NoSuchMethodError: net.sf.saxon.dom.NodeWrapper$ChildEnumeration.isAtomizing()Z at java.util.concurrent。 FutureTask$Sync.innerGet(FutureTask.java:252) at java.util.concurrent.FutureTask.get(FutureTask.java:111) at com.sun.faces.config。ConfigManager.getConfigDocuments(ConfigManager.java:668) ... 25 更多原因:java.lang.NoSuchMethodError: net.sf.saxon.dom.NodeWrapper$ChildEnumeration.isAtomizing()Z at net.sf.saxon.dom.NodeWrapper $ChildEnumeration.(NodeWrapper.java:1079) at net.sf.saxon.dom.NodeWrapper.iterateAxis(NodeWrapper.java:722) at net.sf.saxon.instruct.ApplyTemplates.defaultAction(ApplyTemplates.java:375) at net .sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:333) 在 net.sf.saxon.Controller.transformDocument(Controller.java:1807) 在 net.sf.saxon.Controller.transform(Controller.java:1621 ) 在 com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:831) 在 com.sun.faces 的 com.sun.faces.config.ConfigManager$ParseTask.getDocument(ConfigManager.java:906)。配置。ConfigManager$ParseTask.call(ConfigManager.java:787) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at com .sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:656) ... 还有 25 个 2010 年 9 月 25 日 6:05:48 PM com.google.apphosting.utils.jetty.JettyLogger warnwarn

但我仍然不使用该库,也不明白 JSF 为何开始使用它。我试图从 saxon jar 中删除文件 javax.xml.transform.TransformerFactory,但它没有帮助。

0 投票
3 回答
2665 浏览

java - Java 中 XSD 验证错误消息的 I18n

我使用以下类执行 XSD XML 验证:

问题是验证器返回的 XSD 错误消息始终是英文的。是否可以使用 JAXP API 调用区域感知验证?

0 投票
2 回答
273 浏览

xml - 如何使用旧 (1999) 模式版本在 JAXP 中解析/验证 XML?

我有一个使用旧版本的 XML 规范 (http://www.w3.org/1999/XMLSchema) 构建的 XML 模式。我正在尝试使用架构解析 XML 消息(如下所示)。默认情况下,Xerces 1.1 解析器在应用程序域根目录中查找模式。我正在尝试将架构移动到我们网络目录中的公共位置。似乎我无法使用 Xerces 1.1 库在我的解析程序中将 URL 指定为模式位置。

所以我尝试升级我的程序以使用 JAXP DocumentBuilderFactory 及其 setSchema() 方法。这似乎找到了具有我提供的架构 URL 的架构,除了它给出了解析错误,因为架构(大概)不符合规范的更高版本(例如,我收到错误,因为我的 Ticket 元素不将其成员包装在 xs:Sequence 中)。

我无法升级我的架构,因为目前我无法强制外部客户重写他们向我们发送消息的应用程序。

谁能告诉我如何使用 JAXP 成功地解析/验证使用老式版本的模式规范?或者,有没有办法告诉 Xerces 1.1 DOMParser 使用由 URL(不是文件位置)定义的模式?

这是架构的示例:

XML 文档如下所示:

谢谢!

0 投票
1 回答
377 浏览

xml - XML/XSLT/Xpath 标准合规性

我们的商店开发了多个核心产品和客户特定实施的平台。该平台已经存在 5 年了,现在我们正在尝试重新思考/重新构建平台。作为平台所有者,以下是我计划遵守的几个关键原则

  • 尽可能接近 Java EE 规范
  • 限制或消除对 3rd 方库的依赖
  • 使平台组件的合同明确,如果可能的话,使其成为符合 osgi 的捆绑包
  • 符合标准(对于非 Java EE 的东西)

因此,我们非常依赖 JAXP 和 XSLT 进行转换。当我们在不同供应商的应用服务器以及来自同一供应商的不同版本的应用服务器上进行部署时,我们经常遇到 XSLT 样式表的问题。大多数时候问题是

  1. 在 XSLT 中使用 parser-impl 特定的东西
  2. 在应用程序中捆绑解析器实现
  3. 将 XSLT 2.0/XPath 2.0 与 JAXP 1.3 等一起使用

我在下面需要一些帮助

  1. 由于 JAXP 1.4 仅支持 XSLT 1.0 和 Xpath 1.0,我在哪里可以检查我的 XSLT 对 1.0 的合规性?
  2. 是否有 XSLT 1.0 支持的功能列表等(我正在寻找类似于 XSLT 和 XPath 的 javadoc
0 投票
1 回答
1130 浏览

java - MessageFactory 的 jaxp 对象缓存

javax.xml.soap.MessageFactory可以重用吗?
IE

我可以缓存 msgFactory 并根据需要重用它来创建新的 SOAPMessages 吗?如果可以在代码中重用 msgFactory
也应该同步吗?msgFactory.createMessage();

更新:
同样在单线程代码中,我可以存储 msgFactory 以一遍又一遍地创建 SOAPMessages,以免每次都创建 MessageFactory 的新实例谢谢

0 投票
5 回答
1362 浏览

java - 检测 System.setProperty 方法调用

我在这里面临一个难题。

我开发的应用程序之一是加载 JAXP 的DocumentBuilderFactory类的错误实现。这种行为后来被推断是由不同团队/公司构建的不同应用程序中的另一个类引起的。所述类在加载时更改了首选的 DocumentBuilderFactory 类,包括一个类似于下面的静态块:

如果通过DocumentBuilderFactory.newInstance方法的 Javadocs,很明显,当调用 newInstance 方法时,上述代码负责更改返回给所有应用程序的解析器实现。

应用了一个补丁,纠正了这个问题,但它让我问这个问题——如何确定哪个类在运行时执行 System.setProperty 调用?

我们已经生成了一个自定义构建的 OpenJDK,其中包含一个修改过的 System 类,该类负责找出罪魁祸首,原因很简单,因为我们无法访问服务器上部署的所有应用程序的所有源。但这之所以成为可能,是因为生产环境是完全复制的。因此,这个问题也可以解释为—— 在生产环境中,如何确定哪个类在运行时执行 System.setProperty 调用?

0 投票
1 回答
2625 浏览

java - 如何欺骗 Java 服务提供者 API (jaxp)

我有一个需要调用 JAXP 的小程序,特别是SAXParserFactory。现在,正如您从 Javadoc 中看到的那样,这在内部使用了服务提供者机制,如此所述:

具体来说,如果它在我调用的任何应用程序 JAR 中都找不到文件,META-INF/services/javax.xml.parsers.SAXParserFactory它将尝试从我的应用程序代码库中获取它。如果我的小程序部署如下:

然后它将尝试向http://www.example.com/myapp/META-INF/services/javax.xml.parsers.SAXParserFactory发出 HTTP 请求

我宁愿它不这样做,特别是因为我的小程序已签名,并且这个额外的 HTTP 调用会触发关于unsigned code的警告。

现在,显而易见的解决方案是像它说的那样将 META-INF/services 文件放在我的应用程序 JAR 中,但是我该怎么做却仍然让它使用用户的 JRE 默认实现的 JAXP?或者,有没有办法说服小程序运行时查看我的 JAR 文件而不是codebase该文件?

注意:我知道我也可以部署我自己的 JAXP-RI 副本,但这对于 applet 来说是相当重量级的。

0 投票
4 回答
4034 浏览

java - dom apis上的java多线程

我有一个进行 xml 解析的函数。我想让函数线程安全,但也要尽可能优化(减少阻塞)。
简而言之,代码如下:

但我不想在每次调用中创建一个新的 DocumentBuilderFactory 或 DocumentBuilder。
我想重用工厂和解析器,但我不确定它们是线程安全的。那么最优化的方法是什么?
1)在类字段中缓存一个DocumentBuilderFactory,并同步factory.newDocumentBuilder();这样每个线程都有自己的 DocumentBuilder 实例
2)缓存 DocumentBuilderFactoryDocumentBuilder 并同步 parser.parse(is); 每个线程
我认为(2)是最好的,但是这样做安全吗?我也可以通过同步来避免阻塞吗?我希望它尽可能快。

谢谢?

0 投票
2 回答
1307 浏览

php - 用于 PHP 的 JAXB (PAXB?)

是否有类似JAXBPHP框架?

我需要一个框架,作为 JAXB,从对象创建 XML 文件。该框架必须知道如何将对象映射到 XML,并在需要时尊重其结构(子对象、列表等)。

此外,它需要进行逆向工程,这意味着将(有效的)XML 文件转换为原始对象。

换句话说,框架必须能够编组对象和解组 XML 文件

我知道 JAXB 有多棒,而且我不能在我目前正在工作的这个项目中使用 Java 真的很糟糕。