Java的。 XML。如何针对XSD Schema验证xml文档的某些部分?

时间:2014-04-08 08:20:22

标签: java xml validation xpath xsd

我以字符串和Document格式从Web服务获得SOAP响应,并且我有一个验证它的方法。问题是我必须验证节点<Result>

我已经有了这个节点,但不知道如何使用标签等获取子节点。

Node result = (Node)xPath.compile("//Result").evaluate(xmlDocument, XPathConstants.NODE);

        <Result>
        <playerID>some id</playerID>
        <partnerUID>some partner uid</partnerUID>
        <registrationLevel>some registration level</registrationLevel>
        <properties>
           <property>
              <key>some key</key>
              <value>some value</value>
           </property>
           <property>...</property>
        </Result>

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我使用这种方式对XSD验证XML文件。我认为这会对你有帮助。

public String validateXMLSchema() throws SAXException, IOException
{
    File folder = new File("xsdPath");
    File[] listOfFiles = folder.listFiles();
    String tempXsdFile;

    for( int i=0; i < listOfFiles.length; i++ )
    {
        if(listOfFiles[i].isFile())
        {
            tempXsdFile = listOfFiles[i].getName();

            try
            {
                SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

                Schema schema = factory.newSchema(new File(xsdPath + tempXsdFile));

                Validator validator = schema.newValidator();
                validator.validate(new StreamSource(new File("C://Users//test.xml")));
                return tempXsdFile;
            }
            catch (IOException | SAXException e)
            {
                System.out.println("ERROR: XML not well known"+ e.getMessage());
            }
        }
    }

    return null;
}