【问题标题】:Java. XML. how to validate certain part of xml document against XSD Schema?爪哇。 XML。如何针对 XSD Schema 验证 xml 文档的某些部分?
【发布时间】:2014-05-20 19:37:40
【问题描述】:

我有一个来自 Web 服务的字符串和Document 格式的 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>

感谢您的帮助

【问题讨论】:

  • 要获取哪些子节点?你的&lt;Result/&gt; 元素是什么样子的?您实际上具体想做什么?
  • @dirkk 我已经更新了我的问题,我有一个用于这部分的 XSD 架构,我需要验证它...有没有办法将子节点作为字符串获取,包括标签?
  • 如果您有 XSD 架构,为什么不通过验证器对其进行验证?在我看来,您想手动完成,这很容易出错并且过于复杂。请参阅stackoverflow.com/questions/15732/… 了解如何根据架构验证您的 XML
  • @dirkk 问题是,我无法为这个 XML 文件生成正确的 XSD 模式,这是来自 Web 服务的 SOAP 响应。我不知道如何处理“Soap:envelope”标签
  • 您当然也可以针对 XSD 仅验证部分 XML。但是,由于您的两个陈述相互矛盾,我现在不确定您是否有 XSD 文件。如果您有,即使只是对于您真正想要检查的 XML 部分,使用 XSD 验证而不是手动检查所有内容。

标签: java xml validation xpath xsd


【解决方案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;
}

【讨论】:

  • 我有几乎相同的方法,问题是我无法为我的 xml 文件制作正确的 XSD 架构,我决定只验证我需要的部分
  • 已解决!这是迄今为止我发现的最棒的tool - 生成很棒的 XSD 架构。
猜你喜欢
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
相关资源
最近更新 更多