我想用Java解析XML文件并在同一步骤中针对XSD模式验证它。一个XML文件可能包含多个模式的内容,如下所示:helloworld给定命名空间,可以提供相应的xsd文件,但使用的命名空间在解析之前是未知的。如果模式定义了属性的默认值,我也想以某种方式知道。如果架构已知,我能够验证文件,我能够在没有验证的情况下解析文件,并且我实现了LSResourceResolver。但是,我无法让所有这些一起工作。我必须如何设置我的(SAX)解析器? 最佳答案 设计JavaXMLAPI的人一定是吸毒了......publicvoidparseAn
我需要从jar加载XSD文件,所以实现了LSResourceResolver如下:SourceschemaFile=newStreamSource(getClass().getClassLoader().getResourceAsStream("resources/xsd/root/maindoc/MainSchema.xsd"));SchemaFactoryschemaFactory=SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);schemaFactory.setResourceResolver(newLS
我正在尝试进行xml验证。我在运行时得到了一个模式列表(可能包装在一个jar里)。验证通过或失败取决于我向SchemaFactory提供模式的顺序。这是我正在做的:privatevoidvalidateXml(Stringxml,Listschemas){Source[]source=newStreamSource[schemas.size()];inti=0;for(URIf:schemas){source[i++]=newStreamSource(f.openStream());}SchemaFactorysf=SchemaFactory.newInstance(XMLConsta
我收到以下异常:java.lang.IllegalArgumentException:NoSchemaFactorythatimplementstheschemalanguagespecifiedby:http://www.w3.org/2001/XMLSchema-instancecouldbeloadedatjavax.xml.validation.SchemaFactory.newInstance(SchemaFactory.java:204)atMAIN.SchemaImport3.validateXMLSchema(SchemaImport3.java:74)atMAIN.S
使用最新的JAXB(Sun)并具有架构层次结构,该架构在架构之间使用导入指令来共享类型定义。在JAXB中对Marshaller/Unmarshaller的setSchema调用激活模式验证,这应该将验证推迟到Xerces(使用Java1.5)。在使用SchemaFactory创建架构对象时,我不想知道架构之间导入指令的顺序。不幸的是,我还没有找到允许这样做的Xerces特性/属性。例如,如果通过导入将a.xsd拉入b.xsd,则以下代码不起作用:FileInputStreama=newFileInputStream("a.xsd");FileInputStreamb=newFileIn
我有一个android4.0应用程序,它尝试按照AndroidSDK中的建议调用以下内容:SchemaFactorysf=SchemaFactory.newInstance(javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);但这给了我以下异常(exception):java.lang.IllegalArgumentException:http://www.w3.org/2001/XMLSchema我的代码:btnSearch.setOnClickListener(newButton.OnClickListener(){publicvoidonC
在java中有一个类SchemaFactory用于模式验证,但它在android中不可用。还有其他选择吗? 最佳答案 只要SchemaFactory类不需要JNI代码,您就可以将其.jar文件导入您的Android项目并直接使用它。 关于java-模式验证安卓,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/801632/
我已经创建了一个XML并且我有一个XSD文件,我必须用这个模式验证xml,我能得到任何这样做的例子吗?我必须将xsd文件放在我的项目中,以便我可以使用该架构进行验证。 最佳答案 根据documentationjavax.xml.validation自API级别8起受支持。(我会测试并尽快报告)更新好吧,问题没那么简单:SchemaFactoryfactory=SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);在8级和9级API上均失败并出现IllegalArg
我有两个模式文件,一个是从另一个导入的。在Eclipse中执行代码时发现模式,但在执行jar模式文件中的代码时未找到这是代码SAXParserFactoryfactory=SAXParserFactory.newInstance();factory.setNamespaceAware(true);factory.setValidating(false);SchemaFactoryschemaFactory=SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");try{factory.setSchema(schemaF
使用AndroidSDK,纯空Activity中的以下代码会失败:@OverrideprotectedvoidonStart(){super.onStart();SchemaFactoryschemaFactory=SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);}2.2模拟器logcat显示此异常:06-2805:38:06.107:WARN/dalvikvm(495):threadid=1:threadexitingwithuncaughtexception(group=0x4001d800)06-2805