XML 结构化文档的处理是比价麻烦的,为在cortex-M CPU 上处理XML,我选择了tinyxml2 库,并且在Arm mbed OS 上实现。相对比较简单,在这里分享出来。
下载
代码下载地址https://github.com/leethomason/tinyxml2
文档地址:http://leethomason.github.io/tinyxml2/
下载解压后,在tinyxml2-master 找出tinyxml2.cpp 和tinyxml2.h 两个文件。这个有用的文件
mbed OS 上的测试
新建一个新项目,建立一个新文件夹tinyxml2,上传tinyxml2.cpp 和tinyxml2.h 两个文件到该文件夹中。
编写测试程序
#include "mbed.h"
#include "tinyxml2/tinyxml2.h"
#include <cerrno>
#include <cstdlib>
#include <cstring>
using namespace tinyxml2;
using namespace std;
int main(){
// Test: Programmatic DOM
// Build:
// <element>
// <!--comment-->
// <sub attrib="0" />
// <sub attrib="1" />
// <sub attrib="2" >& Text!</sub>
// <element>
XMLDocument* doc = new XMLDocument();
XMLNode* element = doc->InsertEndChild( doc->NewElement( "element" ) );
XMLElement* sub[3] = { doc->NewElement( "sub" ), doc->NewElement( "sub" ), doc->NewElement( "sub" ) };
for( int i=0; i<3; ++i ) {
sub[i]->SetAttribute( "attrib", i );
}
const int dummyInitialValue = 1000;
int dummyValue = dummyInitialValue;
XMLNode* comment = element->InsertFirstChild( doc->NewComment( "comment" ) );
comment->SetUserData(&dummyValue);
element->InsertAfterChild( comment, sub[0] );
element->InsertAfterChild( sub[0], sub[1] );
element->InsertEndChild( sub[2] );
sub[2]->InsertFirstChild( doc->NewText( "Text!" ));
doc->Print();
}
上述程序已经在最新mbed OS6 下编译运行,请放心采纳.