khl_xml 1.0.0
载入中...
搜索中...
未找到
khl_xml_document.cpp
2// #include "khl_xml/khl_xml_node.h"
4#include <cstdarg>
5
6KHL_XML_NAMESPACE_BEGIN
7
8XmlDocument::XmlDocument(Whitespace whitespaceMode) : XmlNode(),
9 _errorId(XML_SUCCESS),
10 _whitespaceMode(whitespaceMode),
11 _errorStr(),
12 _errorLineNum(0),
13 _parseCurLineNum(0)
14{
15 _document = this;
16}
17
18XmlDocument::~XmlDocument()
19{
20}
21
23{
25 _errorLineNum = 0;
26 _errorStr.Reset();
27}
28
30{
31 DeleteChildren();
32
33 ClearError();
34}
35
36XMLError XmlDocument::Parse(const char *xml, size_t nBytes)
37{
38 return XMLError::XML_SUCCESS;
39}
40
41XMLError XmlDocument::LoadFile(const char *filename)
42{
43 if (!filename)
44 {
45 KHL_XML_ASSERT(false);
46 SetError(XML_ERROR_FILE_COULD_NOT_BE_OPENED, 0, "filename=<null>");
47 return _errorId;
48 }
49
50 Clear();
51 FILE *fp = XmlUtil::callfopen(filename, "rb");
52 if (!fp)
53 {
54 SetError(XML_ERROR_FILE_NOT_FOUND, 0, "filename=%s", filename);
55 return _errorId;
56 }
57 // LoadFile(fp);
58 fclose(fp);
59 return _errorId;
60}
61
62void XmlDocument::Parse()
63{
64}
65
66void XmlDocument::SetError(XMLError error, int lineNum, const char *format, ...)
67{
68 // 错误号是否合法
69 KHL_XML_ASSERT(error >= 0 && error < XML_ERROR_COUNT);
70
71 // 保存错误号
72 _errorId = error;
73 // 保存错误行
74 _errorLineNum = lineNum;
75
77 // 清空
78 _errorStr.Reset();
79
80 const size_t BUFFER_SIZE = 1000;
81 char *buffer = new char[BUFFER_SIZE];
82
83 KHL_XML_ASSERT(sizeof(error) <= sizeof(int));
84 XmlUtil::snprintf_(buffer, BUFFER_SIZE, "Error=%s ErrorID=%d (0x%x) Line number=%d", "", int(error), int(error), lineNum);
85
86 if (format)
87 {
88 size_t len = strlen(buffer);
89 XmlUtil::snprintf_(buffer + len, BUFFER_SIZE - len, ": ");
90 len = strlen(buffer);
91
92 va_list va;
93 va_start(va, format);
94 XmlUtil::vsnprintf_(buffer + len, BUFFER_SIZE - len, format, va);
95 va_end(va);
96 }
97 _errorStr.SetStr(buffer);
98 delete[] buffer;
99}
100
101KHL_XML_NAMESPACE_END
int _errorLineNum
错误行
XMLError Parse(const char *xml, size_t nBytes=static_cast< size_t >(-1))
xml 字符串
XMLError LoadFile(const char *filename)
filename 文件名
void SetError(XMLError error, int lineNum, const char *format,...)
XMLError _errorId
错误号
所有 xml 节点的基类
Definition: khl_xml_node.h:22
Whitespace
空白字符处理模式
XMLError
通用返回状态
@ XML_ERROR_FILE_NOT_FOUND
文件不存在
@ XML_SUCCESS
正确
xml 文档类
通用函数