解析时无法获取属性的名称和值 xml
can't get attribute's name and value while parsing xml
我有一个非空 pugi::xml_node my_node;
。
如果我用my_node.print(std::cout);
打印出来可以清楚的看到这个节点的内容是没问题的。
假设它是:
<my_class id="0" name="my class" type="my type">
<child_1> 45.0 </child_1>
<child_2> 0.01 </child_2>
<child_3> 100.0 </child_3>
<child_4> some_string </child_4>
</my_class>
但是当我尝试迭代它的属性时,我得到了奇怪的输出(看起来像某种地址?)。
for (auto attr : my_node.attributes()){
std::cout << attr.name() << " : " << attr.value() << std::endl;
}
这是输出:
0x55727e049cd4 : 0x55727e049ce4
0x55727e049d1c : 0x55727e049d34
0x55727e049d8c : 0x55727e049da4
顺便说一句,我从文档中拿了这个例子,但我不知道为什么会这样。
我做错了什么?
name()
和 value()
方法 return const char_t*
.
char_t
是 Pugi 特定的类型定义,由 PUGIXML_WCHAR_MODE
宏控制。
我想发生了什么,你定义了 PUGIXML_WCHAR_MODE
,char_t
变成了 wchar_t
,但是 std::cout
不是 Unicode。如果是这种情况,请尝试使用 Unicode 输出,如下所示:
std::wcout << attr.name() << L" : " << attr.value() << std::endl;
我有一个非空 pugi::xml_node my_node;
。
如果我用my_node.print(std::cout);
打印出来可以清楚的看到这个节点的内容是没问题的。
假设它是:
<my_class id="0" name="my class" type="my type">
<child_1> 45.0 </child_1>
<child_2> 0.01 </child_2>
<child_3> 100.0 </child_3>
<child_4> some_string </child_4>
</my_class>
但是当我尝试迭代它的属性时,我得到了奇怪的输出(看起来像某种地址?)。
for (auto attr : my_node.attributes()){
std::cout << attr.name() << " : " << attr.value() << std::endl;
}
这是输出:
0x55727e049cd4 : 0x55727e049ce4
0x55727e049d1c : 0x55727e049d34
0x55727e049d8c : 0x55727e049da4
顺便说一句,我从文档中拿了这个例子,但我不知道为什么会这样。
我做错了什么?
name()
和 value()
方法 return const char_t*
.
char_t
是 Pugi 特定的类型定义,由 PUGIXML_WCHAR_MODE
宏控制。
我想发生了什么,你定义了 PUGIXML_WCHAR_MODE
,char_t
变成了 wchar_t
,但是 std::cout
不是 Unicode。如果是这种情况,请尝试使用 Unicode 输出,如下所示:
std::wcout << attr.name() << L" : " << attr.value() << std::endl;