gpt4 book ai didi

java - SAXParser 不允许 Xinclude

转载 作者:数据小太阳 更新时间:2023-10-29 02:12:13 25 4
gpt4 key购买 nike

我正在尝试解码一个包含 <xi:include> 的 xml 文档里面的标签。但是 SAXParser 不允许这样做,即使我明确告诉 SAXParserFactory 允许它。

Java代码:

SAXParserFactory spf = SAXParserFactory.newInstance();
spf.setXIncludeaware(true);
spf.setNamespaceAwere(true);

spf.setFeature("http://apache.org/xml/features/xinclude", true);
spf.setFeature("http://apache.org/xml/features/xinclude/fixup-base-uris", true);

XMLReader xr = spf.newSAXParser().getXMLReader();
SAXSource source = new SAXSource(xr, new InputSource(inputStream));
JAXBElement<MyClass> el = unmarshaller.unmarshal(source, MyClass.class);

要阅读的 XML 文档

<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="http://www.example.com/test" xmlns:ext="http://www.example.com/test" xmlns:xi="http://www.w3.org/2003/XInclude">
<visibility>
<resourceConstraints>
<resourceConstraint ext:resourceId="resourceOne">
<role ext:show="true">AdminUsers</role>
</resourceConstraint>
<resourceConstraint ext:resourceId="resourceTwo">
<role ext:show="true">AdminUsers</role>
</resourceConstraint>
</resourceConstraints>
<xi:include href="extraContent.xml" />
</visibility>
</extension>

当我运行它时,我得到了这个异常:

org.xml.sax.SAXParseException; lineNumber: 12; columnNumber: 50; cvc-complex-type.2.4.a: Invalid content was found starting with element 'xi:include'. One of '{"http://www.example.com/test":resourceConstraints}' is expected.

当我删除 <xi:include>标记来自 XML 文档,文件解码就好了。 unmarshaller 有一个附加到它的模式。该架构不允许 <xi:include> .

最佳答案

我使用了 xmlns:xi="http://www.w3.org/2003/XInclude" 而我应该使用 xmlns:xi="http://www. w3.org/2001/XInclude”

问题已经解决了!

关于java - SAXParser 不允许 Xinclude,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26732542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com