作者bellman (Richard E. Bellman)
看板C_and_CPP
标题[问题] TinyXMl2适合使用读取XML吗
时间Mon Oct 29 20:03:34 2018
开发平台(Platform): (Ex: Win10, Linux, ...)
Win8 Win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
GCC MinGW?
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
TinyXML2
问题(Question):
<Staff>
<Name> David Lee </Name>
<ID> 1234567 </ID>
<age> 38 </age>
<Department> CS </Department>
<Salary> 100000</Salary>
</Staff>
<Staff>
<Name> Jeff Wu </Name >
<ID> 1234568 </ID>
<age> 50 </age>
<Department> EE </Department>
<Salary> 200000</Salary>
</Staff>
以上两个档案要转为
<Staff1>
Name: David Lee
ID: 1234567
Age: 38
Department: CS
Salary: 100000
<Staff2>
Name: Jeff Wu
ID: 1234568
age: 50
Department: EE
Salary: 200000
请问这样适合吗?
喂入的资料(Input):
<Staff>
<Name> David Lee </Name>
<ID> 1234567 </ID>
<age> 38 </age>
<Department> CS </Department>
<Salary> 100000</Salary>
</Staff>
预期的正确结果(Expected Output):
<Staff1>
Name: David Lee
ID: 1234567
Age: 38
Department: CS
Salary: 100000
错误结果(Wrong Output):
完全没画面
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://ideone.com/20IEkW
//以上跑不动 因为没有引进tinyXML2
void TTT(){
tinyxml2::XMLDocument docXml;
XMLError errXml = docXml.LoadFile("../oldData.xml");
if (XML_SUCCESS == errXml){
XMLElement* elmtRoot = docXml.RootElement();
XMLElement *elmtStaff = elmtRoot->FirstChildElement("Staff");
XMLElement *elmtName = elmtStaff->FirstChildElement("Name");
if (elmtName)
{
const char* pContent = elmtName->GetText();
printf( "%s", pContent);
}
XMLElement *elmtID = elmtName->NextSiblingElement("ID");
if (elmtID)
{
const char* pContent= elmtID->GetText();
printf( "%s", pContent);
}
XMLElement *elmtDepartment = elmtID->NextSiblingElement("Department");
if (elmtDepartment)
{
const char* pContent= elmtDepartment->GetText();
printf( "%s", pContent);
}
XMLElement *elmtSalary = elmtDepartment->NextSiblingElement("Salary");
if (elmtSalary)
{
const char* pContent= elmtSalary->GetText();
printf( "%s", pContent);
}
XMLElement *elmtAge = elmtName->NextSiblingElement();
if (elmtAge)
{
const char* pContent= elmtAge->GetText();
printf( "%s", pContent);
}
}
}
补充说明(Supplement):
http://www.grinninglizard.com/tinyxml2/
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 27.100.19.120
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1540814616.A.40A.html
※ 编辑: bellman (140.124.183.175), 10/29/2018 20:10:23
1F:→ enonrick: tinyxml没问题,还有更快的pugixml可以用,但简单结构建 10/30 09:20
2F:→ enonrick: 议json就足够 10/30 09:20
3F:推 chchwy: tinyxml2适不适合读取xml? 不然tinyxml2是拿来读什麽? 10/30 11:17
4F:推 achicn3: 楼上XD 10/30 15:43
5F:→ MOONRAKER: json不json显然不是他可以选择的。你接API的时候会跟他 10/31 01:33
6F:→ MOONRAKER: 们说「天啊还用什麽XML肥皂(SOAP),换json啦」吗? 10/31 01:35
7F:推 askacis: 用过tinyxml跟minixml,处理简单xml还算方便,但是遇到大 10/31 13:04
8F:→ askacis: 型专案,用gsoap直接从xsd长出来骨架code还是比这两个方 10/31 13:04
9F:→ askacis: 便快速很多 10/31 13:04