在C+中读写XML文件+; 我研究了很多如何在C++中读写简单的XML文件,但是我不能开发它的代码。

在C+中读写XML文件+; 我研究了很多如何在C++中读写简单的XML文件,但是我不能开发它的代码。,c++,xml,xerces-c,C++,Xml,Xerces C,我工作并安装了xerces-c库,我认为需要使用DOM或SAX2解析器来读取它 请有人帮我写代码 这样做的示例代码将非常有用 谢谢并致以最良好的问候, Adarsh Sharma我推荐MSXML。它可能看起来很复杂,但当你习惯了它后,它会变得很好和简单。 以下是一个示例: input.xml: <?xml version="1.0" encoding="UTF-8"?> <Car> <Wheels> <Wheel1>FL&l

我工作并安装了xerces-c库,我认为需要使用DOM或SAX2解析器来读取它

请有人帮我写代码

这样做的示例代码将非常有用

谢谢并致以最良好的问候,
Adarsh Sharma

我推荐MSXML。它可能看起来很复杂,但当你习惯了它后,它会变得很好和简单。
以下是一个示例:

input.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Car>
    <Wheels>
        <Wheel1>FL</Wheel1>
        <Wheel2>FR</Wheel2>
        <Wheel3>RL</Wheel3>
        <Wheel4>RR</Wheel4>
    </Wheels>
</Car>

佛罗里达州
FR
RL
RR
代码:

#包括
#包括
#包括
#导入重命名命名空间(_T(“MSXML”))
int main(int argc,char*argv[]){
HRESULT hr=协同初始化(NULL);
如果(成功(hr)){
试一试{
MSXML::IXMLDOMDocument2Ptr xmlDoc;
hr=xmlDoc.CreateInstance(uuuidof(MSXML::DOMDocument60),
NULL,CLSCTX_在PROC_服务器中);
//TODO:如果(失败(hr))。。。
if(xmlDoc->load(_T(“input.xml”)!=VARIANT\u TRUE){
printf(“无法加载input.xml\n”);
}否则{
printf(“XML已成功加载\n”);
xmlDoc->setProperty(“SelectionLanguage”、“XPath”);
MSXML::IXMLDOMNodeListPtr wheels=xmlDoc->selectNodes(“/Car/wheels/*”);
printf(“汽车有%u个轮子\n”,轮子->Getlength());
MSXML::IXMLDOMNodePtr节点;
node=xmlDoc->createNode(MSXML::node_元素,_T(“引擎”),_T(“”);
节点->文本=_T(“引擎1.0”);
xmlDoc->documentElement->appendChild(节点);
hr=xmlDoc->save(_T(“output.xml”);
如果(成功(hr))
printf(“output.xml已成功保存\n”);
}
}捕获(_com_error&e){
printf(“错误:%ws\n”,例如ErrorMessage());
}
coninitialize();
}
返回0;
}
输出: XML已成功加载 这辆车有四个轮子 output.xml已成功保存

output.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Car>
    <Wheels>
        <WheelLF>1</WheelLF>
        <WheelRF>2</WheelRF>
        <WheelLR>3</WheelLR>
        <WheelRR>4</WheelRR>
    </Wheels>
    <Engine>Engine 1.0</Engine></Car>

1.
2.
3.
4.
引擎1.0
您将在这里找到所需的一切:


希望有人觉得这个有用;)

Boost serializer可以做到这一点,如果您向其传递一个对象,它将编写一个包含所有类属性的文件(二进制或xml,甚至是一个简单的文本文件)。

如果您不介意尝试其他内容,请尝试vtd xml。它更好、更简单、更快。@Raphael,我同意,这些例子很全面,涵盖了所有的OPs需求。我需要一个Mac OSX的解决方案。你能帮忙吗?@MahbuburRAaman:很抱歉反应太晚,我不会帮你的,因为我没有使用MacOSX的经验。但我相信你已经找到了另一个解决方案:)你忘了标题#include
<?xml version="1.0" encoding="UTF-8"?>
<Car>
    <Wheels>
        <WheelLF>1</WheelLF>
        <WheelRF>2</WheelRF>
        <WheelLR>3</WheelLR>
        <WheelRR>4</WheelRR>
    </Wheels>
    <Engine>Engine 1.0</Engine></Car>