- libxml2 github访问网站
libxml2 release包下载 - 这下载的版本为:libxml2-2.7.7.tar.xz
- tar -xvf libxml2-2.7.7.tar.xz
- cd libxml2-2.7.7
- libxml2交叉编译:mkdir libxml2_arm64
./configure CROSS_COMPILE=arm-linux CC=/home/forlinx/Templates/project/public/Tool/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc --host=arm-linux --with-python=no --with-zlib=no --prefix=/home/forlinx/Templates/project/public/3rd_party/libxml2-2.7.7/libxml2_arm64/
make
make install
objdump -a libxml2_arm64/lib/libxml2.a 查看库的属性 - example创建一个xml文件
:
/********************************************************************
created: 2007/11/09
created: 9:11:2007 15:34
filename: CreateXmlFile.cpp
author: Wang xuebin
depend: libxml2.lib
build: nmake TARGET_NAME=CreateXmlFile
purpose: 创建一个xml文件
*********************************************************************/
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <iostream>
using namespace std;
int main()
{
//定义文档和节点指针
xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");
xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST"root");
//设置根节点
xmlDocSetRootElement(doc,root_node);
//在根节点中直接创建节点
xmlNewTextChild(root_node, NULL, BAD_CAST "newNode1", BAD_CAST "newNode1 content");
xmlNewTextChild(root_node, NULL, BAD_CAST "newNode2", BAD_CAST "newNode2 content");
xmlNewTextChild(root_node, NULL, BAD_CAST "newNode3", BAD_CAST "newNode3 content");
//创建一个节点,设置其内容和属性,然后加入根结点
xmlNodePtr node = xmlNewNode(NULL,BAD_CAST"node2");
xmlNodePtr content = xmlNewText(BAD_CAST"NODE CONTENT");
xmlAddChild(root_node,node);
xmlAddChild(node,content);
xmlNewProp(node,BAD_CAST"attribute",BAD_CAST "yes");
//创建一个儿子和孙子节点
node = xmlNewNode(NULL, BAD_CAST "son");
xmlAddChild(root_node,node);
xmlNodePtr grandson = xmlNewNode(NULL, BAD_CAST "grandson");
xmlAddChild(node,grandson);
xmlAddChild(grandson, xmlNewText(BAD_CAST "This is a grandson node"));
//存储xml文档
int nRel = xmlSaveFile("CreatedXml.xml",doc);
if (nRel != -1)
{
cout<<"一个xml文档被创建,写入"<<nRel<<"个字节"<<endl;
}
//释放文档内节点动态申请的内存
xmlFreeDoc(doc);
return 1;
}
- cmak使用方法:
cmake_minimum_required(VERSION 3.2.2)
project(libxml2)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR} ALL_SRC) #查找.目录下的所有.c或.cpp文件
include_directories(${CMAKE_CURRENT_SOURCE_DIR}
./libxml2_arm64/include/libxml2
)
# 添加库的搜索路径
link_directories(
./libxml2_arm64/lib
)
foreach(_target
CreateXmlFile parse_xml
)
add_executable(${_target} "${_target}.cpp")
target_link_libraries(${_target}
-lxml2
-lpthread
)
endforeach()