1

在互联网和不同的论坛上搜索后,还没有找到我的答案。
我有一个由两个 XSD 架构定义的 XML 文件。
对于写 XML 文件,有两种写 XML 文件的方法:(
我必须删除“<”字符才能显示 XML 文件)
第一种写方法:

?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Policy xmlns="http://www.W3C.com/Policy/v3#"  xmlns:ns2="http://www.W3C.com   /PolicyExtension/v3#">
DigestAlg Algorithm="http://test"/>
Transforms>
Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n20010315"></Transform>
/Transforms>
     ns2:Validation>
         ns2:ConditionID>1.0.1</ns2:ConditionID>
         ns2:TConditionID>1.0.2</ns2:TConditionID>
      /ns2:Validation>
/Policy>"  

第二种方法:

?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Policy xmlns="http://www.W3C.com/Policy/v3#">
DigestAlg Algorithm="http://test"/>
Transforms>
Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n20010315"></Transform>
/Transforms>
     Validation xmlns:ns2="http://www.W3C.com/PolicyExtension/v3#">
         ConditionID>1.0.1</ns2:ConditionID>
         TConditionID>1.0.2</ns2:TConditionID>
      /Validation>
/Policy>  

为了解析我的 XML 文件,我使用:

InputStream doc = new FileInputStream(myXMLFile);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    SchemaFactory sf =     SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    List<Source> sourceListSchema = new ArrayList<Source>();
    sourceListSchema.add(new StreamSource(SignaturePolicy.class.getResourceAsStream(MY_XSD_SCHEMA_1)));
    sourceListSchema.add(new StreamSource(SignaturePolicy.class.getResourceAsStream(MY_XSD_SCHEMA_2)));

    Schema schema;
    try {
        Source[] sourceTmp = new Source[1];
        schema = sf.newSchema(sourceListSchema.toArray(sourceTmp));
    } catch (SAXException e) {
        LogMachine.logger.severe(
                "SAXException : The schema can not be parse :"+e.getMessage());
    }

    dbf.setIgnoringElementContentWhitespace(true);
    dbf.setNamespaceAware(true);
    dbf.setIgnoringComments(true);
    dbf.setSchema(schema);

    DocumentBuilder db;
    try {
        db = dbf.newDocumentBuilder();
        documentPolicy = db.parse(Doc); 
    } catch (ParserConfigurationException e) {
        LogMachine.logger.severe(
                "ParserConfigurationException : the file can not be parse by DOM :"+e.getMessage());
    } catch (SAXException e) {
        LogMachine.logger.severe(
                "SAXException : the file can not be parse by DOM :"+e.getMessage());
    } catch (IOException e) {
        LogMachine.logger.severe(
                "IOException : the file can not be open like a file :"+e.getMessage());
    }

当我想用 DOM 解析这个文档时,第一个 XML 文件显示错误

线程“main”org.w3c.dom.ls.LSException 中的异常:元素“ns2:Validation”的前缀“ns2”未绑定。

但是第二个 XML 文件很好解析。

有人可以帮我解析这两个文件吗??
谢谢你的帮助

4

0 回答 0