1

是否可以使用 Xerces 解析具有内联模式的 XML 文件?我一直在尽我所能来完成这项工作,但我无法成功。它总是在下面代码的最后一行抛出异常(模式是一个包含 xml 和内联模式的字符串):

private XSModel getXSModel(String schema) throws XNIException, IOException{
    XMLGrammarPreparser preparser = new XMLGrammarPreparser();  
    preparser.registerPreparser(XMLGrammarDescription.XML_SCHEMA, null);  
    XSGrammar g = (XSGrammar)preparser.preparseGrammar(XMLGrammarDescription.XML_SCHEMA,new XMLInputSource(null, null, null,new ByteArrayInputStream(schema.getBytes()), "ISO-8859-1"));  
    return g.toXSModel(); 
}

错误如下:

[错误]:1:9586:s4s-elt-character:除“xs:appinfo”和“xs:documentation”之外的架构元素中不允许使用非空白字符...

该消息出现在属于 XML 的每一行(超出模式标记)


更新:这是一个例子:

<root>
    <schema xmlns="http://www.w3.org/2001/XMLSchema">
        <element name="age" type="integer"/>
    </schema>
    <!--HERE THE XML BEGINS-->
    <age>35</age>
</root>
4

2 回答 2

1

事实证明它支持内联模式:http: //xerces.apache.org/xerces2-j/samples-jaxp.html#InlineSchemaValidator

于 2014-04-30T15:17:05.040 回答
0

您可能希望将文件作为常规 xml 文件读取,使用 xpath 表达式选择模式元素,然后将其转换为输入流。然后在该输入流上调用解析器。

于 2011-01-20T18:41:15.850 回答