首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAXParser不允许Xinclude

SAXParser不允许Xinclude
EN

Stack Overflow用户
提问于 2014-11-04 10:11:29
回答 1查看 1.4K关注 0票数 5

我正在试图解组一个包含<xi:include>标记的xml文档。但是SAXParser不允许这样做,即使我具体地告诉SAXParserFactory允许它。

Java代码:

代码语言:javascript
复制
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文档

代码语言:javascript
复制
<?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>

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

代码语言:javascript
复制
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.

当我从XML文档中删除<xi:include>标记时,文件就会被解封。解组程序有一个附加到它的架构。架构不允许<xi:include>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-10 15:26:15

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

问题解决了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26732542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档