如何在 C++ 中从 xml 整个输出数据中提取特定数据

How to extract a perticular data from xml whole output data in C++

我有一个 C++ 函数,它在控制台上打印整个 xml 输出数据。这个数据有很多元素。我想在控制台上打印特定元素。

我的函数如下所示:

 void SampleEventListner::OnBarcodeEvent(short int eventType, std::string & pscandata){
    cout << pscandata << endl;
}

上面的代码正在打印输出,如所附照片。在许多元素中,我只需要打印数据标签。我们应该怎么做?。谢谢。

您可以使用开源 tinyxml2 库。

我喜欢用pugixml;小巧轻便,速度快。

#include <iostream>
#include "pugixml.hpp"

std::string XML = "<outArgs>\
  <scannerID>1</scannerID>\
  <arg-xml>\
    <scandata>\
      <modelnumber>DS9308-SR00004ZZWW</modelnumber>\
      <serialnumber>19361523701373 </serialnumber>\
      <datalabel>0x68 0x74 0x68 0x74 0x68 0x74 0x68 0x74 0x68 0x74 0x68 0x74 0x68 0x74</datalabel>\
      <rawdata>0x00 0x01 0x00 0x01 0x00 0x01 0x00 0x01 0x00 0x01 0x00 0x01 0x00 0x01</rawdata>\
    </scandata>\
  </arg-xml>\
</outArgs>";

void PrintTag(std::string &pscandata)
{
  pugi::xml_document DOM = pugi::xml_document();
  pugi::xml_parse_result result = DOM.load_string(pscandata.c_str(), pugi::parse_default);
  if (result)
    std::cout << DOM.select_node("//datalabel").node().first_child().value() << "\n";
  else
    std::cout << "Error parsing XML. Offset:" << result.offset;
}

int main(int argc, char *argv[])
{
  PrintTag(XML);
}