我想根据iOS上的XSD验证XML文件。文档暗示使用NSXMLDocument来做到这一点,但它不适用于iOS =(。有没有轻量级的替代方案可以在iOS上做到这一点?iOS上的XSD验证
3
A
回答
3
我结束了在libxml2的使用验证设施,因为它的库已经包含在iOS版。在此之后的示例代码
#include <libxml/parser.h>
#include <libxml/xmlschemas.h>
int is_valid(const xmlDocPtr doc, const char *schema_filename)
{
xmlDocPtr schema_doc = xmlReadFile(schema_filename, NULL, XML_PARSE_NONET);
if (schema_doc == NULL) {
/* the schema cannot be loaded or is not well-formed */
return -1;
}
xmlSchemaParserCtxtPtr parser_ctxt = xmlSchemaNewDocParserCtxt(schema_doc);
if (parser_ctxt == NULL) {
/* unable to create a parser context for the schema */
xmlFreeDoc(schema_doc);
return -2;
}
xmlSchemaPtr schema = xmlSchemaParse(parser_ctxt);
if (schema == NULL) {
/* the schema itself is not valid */
xmlSchemaFreeParserCtxt(parser_ctxt);
xmlFreeDoc(schema_doc);
return -3;
}
xmlSchemaValidCtxtPtr valid_ctxt = xmlSchemaNewValidCtxt(schema);
if (valid_ctxt == NULL) {
/* unable to create a validation context for the schema */
xmlSchemaFree(schema);
xmlSchemaFreeParserCtxt(parser_ctxt);
xmlFreeDoc(schema_doc);
return -4;
}
int is_valid = (xmlSchemaValidateDoc(valid_ctxt, doc) == 0);
xmlSchemaFreeValidCtxt(valid_ctxt);
xmlSchemaFree(schema);
xmlSchemaFreeParserCtxt(parser_ctxt);
xmlFreeDoc(schema_doc);
/* force the return value to be non-negative on success */
return is_valid ? 1 : 0;
}
0
看来,它在Objective C中并不是很容易做到,但目前在SO问题中列出的几个思路:Possible to validate xml against xsd using Objc/iPhone code at runtime
看来CodeSynthesis支持此位置:http://wiki.codesynthesis.com/Using_XSDE_in_iPhone_Applications
我真的只是拉从堆栈溢出问题的联系和思想在这一点上,虽然
+0
是的,我确实看到了CodeSynthesis,虽然我是不是疯了吧,因为它的GPL和设置使用iOS中似乎已经过时,难以遵循=/ – JoeyJ
0
。没有一个通用的模式验证器,试试我们吧如上所述的XSDE。它非常快速,非常非常可靠。
尼斯教程是在这里:http://amateuritsolutions.blogspot.hu/2012/10/validate-xsd-schema-in-your-ios.html
相关问题
- 1. iOS:使用XSD进行XML验证
- 2. XStream xsd验证
- 3. XSD - 验证
- 4. xsd验证againts xsd生成的类级别验证
- 5. XSD验证问题
- 6. 验证java.util.Map对xsd
- 7. 验证XML对XSD
- 8. XSD属性验证
- 9. 部分验证XSD
- 10. Spring ws XSD验证
- 11. Xsd验证错误
- 12. XML XSL XSD验证:
- 13. XSD验证失败
- 14. php-xml验证xsd
- 15. xsd验证问题
- 16. XSD架构验证
- 17. 针对XSD的XML验证
- 18. .xsd验证的c#属性
- 19. XSD验证的ANSI X3.9
- 20. 不同的验证对XSD
- 21. node.js的XSD验证功能?
- 22. iOS上的PNG验证
- 23. 使用XSD验证XSD架构
- 24. XML验证XSD问题
- 25. xml,xsd验证问题
- 26. 使用XSD验证XmlDocument
- 27. xml验证没有xsd
- 28. 根据XSD验证XML
- 29. JAX-WS和XSD验证
- 30. xsd密钥未被验证
我猜的链接是死。任何教程仍然可以在其他地方生活的机会? – miho
已有示例代码的更新答案。任何人想解释downvotes或只是由于deadlink? – JoeyJ
感谢您的示例。不知道,不是我。 – miho