2

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 ガイドは次のように述べています。

データをノードのテキスト コンテンツとして保存するのが一般的です。つまり、これはノードです。この場合、node には値がありませんが、代わりに「This is a node」という値を持つ 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内のインデックス、x、y値を読み取る方法は? 私はすべての助けを借ります。

4

1 に答える 1

5

クイック スタート ページに記載されているいくつかの方法があります。

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>
于 2015-06-02T10:39:23.757 に答える