标签: xerces2-j

如何使用logback禁用accessExternalDTD和entityExpansionLimit警告

我正在使用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编写过滤器,但没有帮助.

java groovy logback saxparser xerces2-j

29
推荐指数
1
解决办法
3万
查看次数

在GlassFish 4.0中为xerces使用认可的标准覆盖机制

如何使用认可的标准机制在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)

java glassfish endorsed xerces2-j java-ee-7

6
推荐指数
0
解决办法
667
查看次数

Xerces2 XML 解析器和 Xalan XSLT 处理器——状态和替换?

现在是 2018 年。用于 Java的Xerces2 XML 解析器Xalan XSLT 处理器库的状态如何?他们的最新版本似乎分别是2013 年的 2.11.02014年的2.7.2

  • 他们还在维护吗?

  • 它们是否完美到甚至不需要偶尔发布补丁?

  • 是否有来自不同供应商的替代库可供使用?这些替代品是否与这两种替代品一样免费?

  • 使用 JDK 提供的功能,通常可以没有这些吗?

java xml xslt xalan xerces2-j

6
推荐指数
2
解决办法
1123
查看次数

使用Xerces-j验证XML文档

我正在尝试使用Xerces-J验证XML文档.

我希望验证器获取并解析任何关联的XSD或DTD文件(使用schemalocation,nonamespaceschemalocationa和DOCTYPE引用).似乎可以将这些资源的加载委托给Resolver类.

然而,我见过的所有样本都是从模式创建验证器开始的.

是否有可能推动这一倒过来,问的Xerces验证XML文档,并将其加载它需要什么,或者我必须先解析XML文件找架构引用,加载它们,然后创建一个从架构验证程序?

在理想的世界中,验证器也支持xsd 1.1

xml xsd sax xsd-validation xerces2-j

5
推荐指数
1
解决办法
323
查看次数

Xerces 2.11.0 (Java) 中的特定于语言环境的消息

我想在我的 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 不是一个选项。

任何帮助表示赞赏!

java localization xerces xerces2-j

4
推荐指数
1
解决办法
3022
查看次数

使用 Xerces 2 防止 XXE(外部 XML 实体)注入

我正在尝试实现 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 注入...

java xml xerces2-j

4
推荐指数
1
解决办法
2364
查看次数