我正在使用groovy的logback并在解析xml时出现很多警告.我知道JDK1.7_u45中导致此问题的错误.
Warning: org.apache.xerces.parsers.SAXParser: Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.
Warning: org.apache.xerces.parsers.SAXParser: Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized.
Run Code Online (Sandbox Code Playgroud)
有没有办法关闭这个日志警告出现在DEBUG?我尝试使用Filter编写过滤器,但没有帮助.
如何使用认可的标准机制在GlassFish 4.0 WAR应用程序中使用xerces?根据文档*,你应该把它放进去domain-dir/lib/endorsed
.但是,当我将xercesImpl,xml-apis以及xml-resolver放在那里时,这些类在WAR中的类中不可用.这最可能是由于文档和默认配置之间的不一致:domain.xml
不列出domain-dir/lib/endorsed
.
当我包含它或放入文件时glassfish-install-dir/lib/endorsed
,启动失败,出现以下异常:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.sun.enterprise.glassfish.bootstrap.GlassFishMain.main(GlassFishMain.java:97)
at com.sun.enterprise.glassfish.bootstrap.ASMain.main(ASMain.java:54)
Caused by: A MultiException has 5 exceptions. They are:
1. javax.xml.stream.FactoryConfigurationError: Provider com.ctc.wstx.stax.WstxOutputFactory not found
2. java.lang.IllegalStateException: Unable to perform operation: create on com.sun.enterprise.v3.server.DomainXmlPersistence
3. javax.xml.stream.FactoryConfigurationError: Provider com.ctc.wstx.stax.WstxInputFactory not found
4. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of com.sun.enterprise.v3.server.GFDomainXml errors were found
5. java.lang.IllegalStateException: Unable …
Run Code Online (Sandbox Code Playgroud) 现在是 2018 年。用于 Java的Xerces2 XML 解析器和Xalan XSLT 处理器库的状态如何?他们的最新版本似乎分别是2013 年的 2.11.0和2014年的2.7.2。
他们还在维护吗?
它们是否完美到甚至不需要偶尔发布补丁?
是否有来自不同供应商的替代库可供使用?这些替代品是否与这两种替代品一样免费?
使用 JDK 提供的功能,通常可以没有这些吗?
我正在尝试使用Xerces-J验证XML文档.
我希望验证器获取并解析任何关联的XSD或DTD文件(使用schemalocation,nonamespaceschemalocationa和DOCTYPE引用).似乎可以将这些资源的加载委托给Resolver类.
然而,我见过的所有样本都是从模式创建验证器开始的.
是否有可能推动这一倒过来,问的Xerces验证XML文档,并将其加载它需要什么,或者我必须先解析XML文件找架构引用,加载它们,然后创建一个从架构验证程序?
在理想的世界中,验证器也支持xsd 1.1
我想在我的 JAXP 和 Xerces2 中使用特定于语言环境的错误消息。默认情况下,只有英文消息可用。
第一步是检索消息文件并将它们放入包“org/apache/xerces/impl/msg/” - 完成。通过使用Locale.setDefault (Locale.GERMANY)
德语消息显示,所以这是有效的。
但我希望在每个实例的基础上对消息进行不同的本地化。所以一个解析器应该返回英语消息,另一个解析器应该返回德语消息。
我用来创建 SAX2 解析器的代码是:
org.xml.sax.XMLReader ret = XMLReaderFactory.createXMLReader ();
Run Code Online (Sandbox Code Playgroud)
对于 DOM,我正在使用 DocumentBuilder 喜欢这个(非常简化):
final DocumentBuilderFactory aDocumentBuilderFactory = DocumentBuilderFactory.newInstance ();
final DocumentBuilder aDocBuilder = aDocBuilderFactory.newDocumentBuilder ();
final Document doc = aDocumentBuilder.parse (aInputSource);
Run Code Online (Sandbox Code Playgroud)
我找到了类似org.apache.xerces.impl.XMLErrorReporter
具有setLocale(Locale)
方法的类的东西,但我没有找到获取/设置它的方法。
顺便说一下,切换到 SAX1 不是一个选项。
任何帮助表示赞赏!
我正在尝试实现 XML 验证,以防止 XXE 注入。OWASP-Page上显示的代码与本机 JDK8 完美配合。
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(fSchema);
Validator validator = schema.newValidator();
validator.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
validator.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
validator.validate(new StreamSource(fXml));
Run Code Online (Sandbox Code Playgroud)
问题是我在 Wildfly10 上使用此代码,其中内部使用 Xerces2 (xercesImpl-2.11.0.SP4) 并且无法识别所需的 XMLConstants。
Exception in thread "main" org.xml.sax.SAXNotRecognizedException: Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.
Run Code Online (Sandbox Code Playgroud)
该问题在具有给定 Maven 依赖项的单元测试中很容易重现
<!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0.SP4</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
尽管可以使用参数在 Wildfly10 上停用 Xerces2
-jaxpmodule“javax.xml.jaxp-provider”
这不是我想做的。
有人知道如何正确配置 Xerxces2 以防止 XXE 注入...