/** 使用Apache Xerces解析器 */ 
org.apache.xerces.parsers.DOMParser mParser =  
new org.apache.xerces.parsers.DOMParser(); 
/** 构造函数 */ // 告诉解析器验证并解析文档 
try { 
mParser.setFeature( "http://xml.org/sax/features/validation",  
true); 
}  
catch (SAXException e) { 
System.out.println("Error setting validation on parser:"); 
e.printStackTrace(); 

解决方案 »

  1.   

    我现在有这样几个文件
    WellFormed.xsd
    <?xml version="1.0" ?>
    <xs:schema targetNamespace="WellFormed"
      xmlns="WellFormed"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      attributeFormDefault="qualified"
      elementFormDefault="qualified">
      <xs:element name="Test">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Name" type="xs:string" minOccurs="0" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema> WellFormed.xml
    <?xml version="1.0" encoding="utf-8"?>
    <x:Test xmlns:x="WellFormed">
        <x:Name>John Doe</x:Name>
        <x:temp/>
    </x:Test> 这里WellFormed.xml中的x:temp是没有定义的,我希望能检验出来
      

  2.   

    我写了一段程序
        public boolean parse(String file) {
            boolean bParser = false;
            
            DOMParser parser = new DOMParser();
            try {
                parser.setFeature("http://xml.org/sax/features/validation", true);
                parser.setFeature(
                    "http://apache.org/xml/features/validation/schema", true);
                parser.setFeature("http://xml.org/sax/features/namespaces", true);            parser.setProperty(
                    "http://apache.org/xml/properties/schema/external-schemaLocation",
                    "WellFormed file:///E:/xml/WellFormed.xsd");
                parser.parse(file);            bParser = true;
            } catch (org.xml.sax.SAXNotRecognizedException e) {
                e.printStackTrace();
            } catch (org.xml.sax.SAXNotSupportedException e) {
                e.printStackTrace();
            } catch (org.xml.sax.SAXException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return bParser;
        }
    希望如果解析正确就返回true,否则返回false,但是不好用,只有一个提示信息,没有错误捕捉的,错误信息如下:
    [[Error] WellFormed.xml:4:11: cvc-complex-type.2.4.d: Invalid content starting with element 'x:temp'. No child element is expected at this point.希望大家多多帮忙才是
      

  3.   

    这样我就不是很清楚了不过可以看看ibm developworks xml专区的在线教程:Xerces-Java 2 中的 XML Schema 验证链接为:
    http://www-900.cn.ibm.com/developerWorks/cn/cnedu.nsf/xml-onlinecourse-bytitle/D081A7C970B335BFC8256C3A00211A1F?OpenDocument搞清楚后也告诉我一下
      

  4.   

    就是实现ErrorHandler自己捕捉异常
      

  5.   

    我用JAXP做了一下。
    两种解决思路:
    1.处理Exception.两种实现办法:一种是实现ErrorHandler接口另一种是继承DefaultHandler.
    2.不处理Exception.直接使用DefaultHandler,然后判断返回的Document节点是否为空。在使用JAXP时,上面的例子将返回null.