1

我在以下代码中将 String 转换为 org.w3.dom.Document:

public static Document convertStringToDocument(String xmlSource) 
        throws SAXException, ParserConfigurationException, IOException{
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        return builder.parse(new InputSource(new StringReader(xmlSource)));
}

我如何通过 xsd 验证它,就像我在此处使用 JAXBSource 所做的那样。

JAXBContext jc = JAXBContext.newInstance(Test.class);
        JAXBSource source = new JAXBSource(jc, ga2);

        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = sf.newSchema(new File("my.xsd"));

        Validator validator = schema.newValidator();
        validator.setErrorHandler(new MyErrorHandler());
        //validator.validate(source);

        validator.validate(new DOMSource(ConnectureXmlParser.convertStringToDocument("<test>Test</test>")));

所以它适用于我班级的 JAXBSource,但不适用于 Document 类型。我应该怎么做才能在同一个 xsd 上验证我的 org.w3c.dom.Document ?

4

1 回答 1

1

如果您的 XML 有命名空间,您将需要调用setNamespaceAware(true)您的实例。DocumentBuilderFactory

于 2013-05-31T00:17:14.773 回答