我想根據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. Xsd驗證vs2010
- 3. XStream xsd驗證
- 4. C# - XSD驗證
- 5. XML XSD驗證
- 6. XSD - 驗證
- 7. XSD RegEx驗證
- 8. W3C xsd驗證器上的SAXParseException
- 9. xsd驗證againts xsd生成的類級別驗證
- 10. 關於XSD驗證
- 11. XSD屬性驗證
- 12. Spring ws XSD驗證
- 13. XSD驗證失敗
- 14. XSD架構驗證
- 15. XSD驗證在CodeIgnitor
- 16. 驗證XML對XSD
- 17. XSD驗證問題
- 18. zend 1 xsd驗證
- 19. XML XSL XSD驗證:
- 20. XSD唯一驗證
- 21. 部分驗證XSD
- 22. xsd驗證問題
- 23. php-xml驗證xsd
- 24. Xsd驗證錯誤
- 25. 針對XSD的XML驗證
- 26. 不同的驗證對XSD
- 27. XSD驗證的ANSI X3.9
- 28. node.js的XSD驗證功能?
- 29. .xsd驗證的c#屬性
- 30. 鬆散的xsd驗證
我猜的鏈接是死。任何教程仍然可以在其他地方生活的機會? – miho
已有示例代碼的更新答案。任何人想解釋downvotes或只是由於deadlink? – JoeyJ
感謝您的示例。不知道,不是我。 – miho