add GetExpatError function.

This commit is contained in:
2020-10-14 12:28:37 +08:00
parent 225bf198b0
commit af510a6cfc
2 changed files with 66 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ namespace hgl
namespace xml namespace xml
{ {
const UTF8String GetExpatVersion(); const UTF8String GetExpatVersion();
const char *GetExpatError(int);
constexpr int XML_PARSE_BUFFER_SIZE=HGL_SIZE_1KB*128; ///<XML解析缓冲区大小 constexpr int XML_PARSE_BUFFER_SIZE=HGL_SIZE_1KB*128; ///<XML解析缓冲区大小

View File

@@ -9,6 +9,61 @@ namespace hgl
{ {
namespace xml namespace xml
{ {
namespace
{
const char *xml_error_code[]=
{
"UNKNOW_ERROR"
"NONE",
"NO_MEMORY",
"SYNTAX",
"NO_ELEMENTS",
"INVALID_TOKEN",
"UNCLOSED_TOKEN",
"PARTIAL_CHAR",
"TAG_MISMATCH",
"DUPLICATE_ATTRIBUTE",
"JUNK_AFTER_DOC_ELEMENT",
"PARAM_ENTITY_REF",
"UNDEFINED_ENTITY",
"RECURSIVE_ENTITY_REF",
"ASYNC_ENTITY",
"BAD_CHAR_REF",
"BINARY_ENTITY_REF",
"ATTRIBUTE_EXTERNAL_ENTITY_REF",
"MISPLACED_XML_PI",
"UNKNOWN_ENCODING",
"INCORRECT_ENCODING",
"UNCLOSED_CDATA_SECTION",
"EXTERNAL_ENTITY_HANDLING",
"NOT_STANDALONE",
"UNEXPECTED_STATE",
"ENTITY_DECLARED_IN_PE",
"FEATURE_REQUIRES_XML_DTD",
"CANT_CHANGE_FEATURE_ONCE_PARSING",
/* Added in 1.95.7. */
"UNBOUND_PREFIX",
/* Added in 1.95.8. */
"UNDECLARING_PREFIX",
"INCOMPLETE_PE",
"XML_DECL",
"TEXT_DECL",
"PUBLICID",
"SUSPENDED",
"NOT_SUSPENDED",
"ABORTED",
"FINISHED",
"SUSPEND_PE",
/* Added in 2.0. */
"RESERVED_PREFIX_XML",
"RESERVED_PREFIX_XMLNS",
"RESERVED_NAMESPACE_URI",
/* Added in 2.2.1. */
"INVALID_ARGUMENT"
};
}//namespace
const UTF8String GetExpatVersion() const UTF8String GetExpatVersion()
{ {
return( UTF8String::valueOf(XML_MAJOR_VERSION)+ return( UTF8String::valueOf(XML_MAJOR_VERSION)+
@@ -18,6 +73,15 @@ namespace hgl
UTF8String::valueOf(XML_MICRO_VERSION)); UTF8String::valueOf(XML_MICRO_VERSION));
} }
const char *GetExpatError(int code)
{
if(code<XML_ERROR_NONE
||code>XML_ERROR_INVALID_ARGUMENT)
return xml_error_code[0];
return xml_error_code[code+1];
}
namespace namespace
{ {
void XMLStartElement(ElementParse *ep,const XML_Char *name,const XML_Char **atts) void XMLStartElement(ElementParse *ep,const XML_Char *name,const XML_Char **atts)