根据xsd验证单个元素

时间:2014-12-18 15:32:17

标签: xml xsd

我有一个方法可以针对XSD验证XML文档。

public void validateAgainstXSD(String xsdPath, Document document) throws SAXException, IOException
{
    SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = factory.newSchema(new StreamSource(new File(xsdPath)));
    Validator validator = schema.newValidator();
    validator.validate(new DOMSource(document));
}

这种方法运行正常。我现在尝试的是验证单个元素 -

NodeList nodeList = doc.getElementsByTagName(rootTag);
for(int i = 0 ; i < nodeList.getLength();i++)
{
   Element element = (Element)nodeList.item(i);
   //Validate only this element
}

我一无所知。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

Validator.validate(Source source) 需要javax.xml.transform.Sourcewhich can be either a document or an element:

  

<强>参数

     

source - 要验证的XML。必须是XML文档或XML元素   并且不能为空。

因此,如果您的代码已用于该文档,

validator.validate(new DOMSource(document));

您应该能够替换元素来代替文档:

validator.validate(new DOMSource(element));

,验证应从那里开始。