Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在没有特定XSD的情况下验证XML_Java_Xml_Validation - Fatal编程技术网

Java 在没有特定XSD的情况下验证XML

Java 在没有特定XSD的情况下验证XML,java,xml,validation,Java,Xml,Validation,在使用XMLInputFactory创建XMLStreamReader时,我试图验证(有效的xml文件)xml 我知道可以在工厂javax.xml.stream.isValidating中设置属性,以允许特定的实现验证(在我的xml示例中)。但是我使用的是java 6 build 43(Jboss eap 6.0),无法更新,因此这对我不起作用(kwnon问题) 因此,如果有人知道任何API(除了StAX)可以做同样的事情,那就太好了! 如果有什么解释不清楚,请告诉我。您可以尝试IBM提供的ja

在使用
XMLInputFactory
创建
XMLStreamReader
时,我试图验证(有效的xml文件)xml

我知道可以在工厂
javax.xml.stream.isValidating
中设置属性,以允许特定的实现验证(在我的xml示例中)。但是我使用的是java 6 build 43(Jboss eap 6.0),无法更新,因此这对我不起作用(kwnon问题)

因此,如果有人知道任何API(除了StAX)可以做同样的事情,那就太好了!
如果有什么解释不清楚,请告诉我。

您可以尝试IBM提供的java xml验证API 您可以使用
javax.xml.validation

ex:

import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
...

URL schemaFile = new URL("http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd");
Source xmlFile = new StreamSource(new File("web.xml"));
SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
try {
  validator.validate(xmlFile);
  System.out.println(xmlFile.getSystemId() + " is valid");
} catch (SAXException e) {
  System.out.println(xmlFile.getSystemId() + " is NOT valid");
  System.out.println("Reason: " + e.getLocalizedMessage());
}
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

        File schemaFile = new File("schema.xsd");

        Schema xsdScheme = factory.newSchema(schemaFile);

        Validator validator = xsdScheme.newValidator();

        Source source = new StreamSource(xmlfile);

        validator.validate(source);
编辑:

import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
...

URL schemaFile = new URL("http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd");
Source xmlFile = new StreamSource(new File("web.xml"));
SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
try {
  validator.validate(xmlFile);
  System.out.println(xmlFile.getSystemId() + " is valid");
} catch (SAXException e) {
  System.out.println(xmlFile.getSystemId() + " is NOT valid");
  System.out.println("Reason: " + e.getLocalizedMessage());
}
SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

        File schemaFile = new File("schema.xsd");

        Schema xsdScheme = factory.newSchema(schemaFile);

        Validator validator = xsdScheme.newValidator();

        Source source = new StreamSource(xmlfile);

        validator.validate(source);

我在SO上找到的一个链接找到了它,我使用api SAX使用提供的SAXParserFactory创建了一个解析器(独立于xsd模式),并解析了该文件。(更多详细信息请参见第页(23/24),网址为)


另外,在使用解析器解析inputstream之前/之后,不要忘记标记/重置inputstream(如果xml文件格式不正确,则会引发异常),这样,如果解析没有失败,您就可以保持原样。

不清楚您在问什么。对于初学者来说,验证总是针对某种模式(XSD、RELAX、Schematron等)。关于有效XML和格式良好的XML之间的区别,我建议您阅读。谢谢。你说得对。我的意思是格式良好的xml文件。例如,当我用firefox打开一个格式不好的xml文件时,它显示了一个错误(例如xml解析错误)。他问“没有特定的XSD”,但你用特定的XSD(
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
)?