在上一篇文章《TinyXML来操作XML文件(C++)》我们练习了创建XML、读取XML的方法,在本文中我们继续学习XML文件的增删改操作:包括读取声明、读取某结点文本属性、删去某结点、修改结点属性文本,增加结点操作
读取XML声明:
void ReadDeclaration(char *FileName,string& version,string& standalone,string& encoding)
{
TiXmlDocument *pDoc = new TiXmlDocument();
pDoc->LoadFile(FileName);
TiXmlNode *pNode = pDoc->FirstChild();
if(pNode != NULL)
{
TiXmlDeclaration *pDecalration = pNode->ToDeclaration();//获取声明指针
if(pDecalration != NULL)
{
version = pDecalration->Version();
standalone = pDecalration->Standalone();
encoding = pDecalration->Encoding();
}
}
}
下来是读取某结点文本,既然是某结点,那么我们首先要找到该节点,获取到该节点指针,通过此指针对其进行修改
查找结点:
bool FindNode(TiXmlElement *pRoot,const string &NodeName,TiXmlElement *&pNode)
{
if (pRoot->Value() == NodeName)
{
pNode = pRoot;
return true;
}
TiXmlElement *p = pRoot;
for (pRoot = p->FirstChildElement();pRoot; pRoot = pRoot->NextSiblingElement())
{
FindNode(pRoot,NodeName,pNode);
return true;
}
return false;
}
上述代码效果
int main(int argc, char **argv)
{
char* Filename = "myXml.xml";
CreateXML(Filename);
ReadXML(Filename);
string version,standalone,encoding;
ReadDeclaration(Filename,version,standalone,encoding);
cout <
return 0;
}
运行结果:
Book
WYY
version: 1.0 standalone: encoding:
读取某结点文本:(注意这里的文本意思是间的文本,所以不要用此方法来读取属性,好挫,我就是在这个问题上卡住好半天
)
bool GetText(char *FileName,const string&NodeName,char* Text)
{
//读节点文本值
TiXmlDocument *pDoc = new TiXmlDocument();
pDoc->LoadFile(Fil