gpt4 book ai didi

c++ - 无法使用 node.value() 获取 pugixml 中 XML 元素的值

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:57 28 4
gpt4 key购买 nike

我的 C++ 源代码中有以下简单的 XML 模板。在下面的代码块中,我需要获取 <scannerID> 的值和 <subscannerID> .这两个元素都是 pugixml 文档根目录的子元素。

xml_document doc;
xml_parse_result r;
std::string sXml = "<inArgs><scannerID>1</scannerID><subScannerID>2</subScannerID></inArgs>";


r = doc.load_buffer(sXml.c_str(), sXml.length());
if (!r) {
return false;
}


xml_node root = doc.child("inArgs");

if (!root) {
return false;
}

std::cout << "root = " << root.name() << std::endl;

xml_node scanner_node = root.child("scannerID");
if (scanner_node) {
std::cout << "scannerID = " << scanner_node.name() << std::endl;
std::cout << "scannerID = " << scanner_node.value() << std::endl;
}

xml_node sub_scanner_node = root.child("subscannerID");
if (scanner_node) {
std::cout << "sub_scanner_node = " << sub_scanner_node.name() << std::endl;
std::cout << "sub_scanner_node = " << sub_scanner_node.value() << std::endl;
}

此代码部分提供如下所示的输出。我可以正确获取节点的名称,但无法检索值。

输出:值为空字符串。

root = inArgs
scannerID = scannerID
scannerID =
subscannerID = subscannerID
subscannerID =

编辑以在答案中添加对方法的修改

node = root.child("scannerID");
if (!node) {
return false;
}

std::cout << "nodeName = %s" << node.name() << std::endl;
std::cout << "text value: " << node.child_value() << std::endl;

但输出仍然相同。我在阅读

中的文档时看到了一些不同的东西

最佳答案

数据在您的元素节点的 pcdata 子节点中。

试试 scanner_node.child_value()

参见 Getting node data部分进一步的例子和解释。

参见 node_element

参见 node_pcdata

关于c++ - 无法使用 node.value() 获取 pugixml 中 XML 元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25182377/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com