【问题标题】:How to read through nodes using pugixml?如何使用 pugixml 读取节点?
【发布时间】:2015-06-02 10:18:36
【问题描述】:

我刚刚下载了 pugixml 库,我正在尝试使其适应我的需要。它主要面向我不使用的 DOM 样式。我存储的数据如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<profile>
    <points>
        <point>
            <index>0</index>
            <x>0</x>
            <y>50</y>
        </point>
        <point>
            <index>1</index>
            <x>2</x>
            <y>49.9583</y>
        </point>
        <point>
            <index>2</index>
            <x>12</x>
            <y>50.3083</y>
        </point>
     </points>
</profile>

Pugixml guide 说:

通常将数据存储为某个节点的文本内容 - 即 这是一个节点。在这种情况下, 节点没有值,而是有一个子节点 键入值为“这是一个节点”的 node_pcdata。 pugixml 提供 child_value() 和 text() 辅助函数来解析这些数据。

但是我在使用这些方法时遇到问题,我没有得到节点值。

#include "pugixml.hpp"

#include <string.h>
#include <iostream>

int main()
{
    pugi::xml_document doc;
    if (!doc.load_file("/home/lukasz/Programy/eclipse_linux_projects/xmlTest/Debug/pidtest.xml"))
        return -1;

    pugi::xml_node points = doc.child("profile").child("points");

    for (pugi::xml_node point = points.first_child(); point; point = points.next_sibling())
    {
        // ?
    }


    return 0;
}

如何读出for里面的index、x、y值?我会获得所有帮助。

【问题讨论】:

    标签: c++ xml pugixml


    【解决方案1】:

    快速入门页面中记录了几种方法:

    我可以推荐 Xpath 吗?

    #include <pugixml.hpp>
    #include <iostream>
    
    int main()
    {
        pugi::xml_document doc;
    
        if (doc.load_file("input.txt")) {
            for (auto point : doc.select_nodes("//profile/points/point")) {
                point.node().print(std::cout, "", pugi::format_raw);
                std::cout << "\n";
            }
        }
    }
    

    打印

    <point><index>0</index><x>0</x><y>50</y></point>
    <point><index>1</index><x>2</x><y>49.9583</y></point>
    <point><index>2</index><x>12</x><y>50.3083</y></point>
    

    【讨论】:

    猜你喜欢
    • 2012-12-29
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2012-08-23
    • 2017-04-27
    相关资源
    最近更新 更多