如何在Arduino中正确解析XML文档?[关闭]

How to parse an XML document correctly in Arduino? [closed]

提问人:TheMostEpic 提问时间:11/17/2023 最后编辑:TheMostEpic 更新时间:11/17/2023 访问量:47

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

2天前关闭。

我正在尝试在 ESP32 (Arduino) 中解析 XML 文档。XML 是从具有 HTTPClient 的网站接收的 getString 方法。如果我将 String 有效负载打印到控制台,似乎没问题。我正在尝试解析文档 tinyxml2 库的 XMLDocument 对象:https://github.com/leethomason/tinyxml2。 该参数必须是类型“const char*”。在以下代码中,它显示错误。 我对 C/C++ 和指针没有太多经验。需要改变什么?

#include <HTTPClient.h>
#include <tinyxml2.h>

...

    String payload = http.getString();
    char payloadChar[payload.length() + 1];
    payload.toCharArray(payloadChar, payload.length() + 1);

    XMLDocument xmlDocument;
    
    if(xmlDocument.Parse(payloadChar)!= XML_SUCCESS){
      Serial.println("Error parsing");  
      return;
    };
20:32:47.616 -> Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
20:32:47.657 -> 
20:32:47.657 -> Core  1 register dump:
20:32:47.657 -> PC      : 0x400d899b  PS      : 0x00060d30  A0      : 0x800d30c1  A1      : 0x3ffca0d0  
20:32:47.657 -> A2      : 0x00000000  A3      : 0x3ffcaf88  A4      : 0x3ffe63d1  A5      : 0x00000000  
20:32:47.657 -> A6      : 0x0000000c  A7      : 0x00000140  A8      : 0x800d9230  A9      : 0x3ffca0b0  
20:32:47.657 -> A10     : 0x3ffcafdc  A11     : 0x3ffcb030  A12     : 0x00000e7d  A13     : 0x3ffe63d0  
20:32:47.657 -> A14     : 0x0000003e  A15     : 0x75636f44  SAR     : 0x00000015  EXCCAUSE: 0x0000001c  
20:32:47.657 -> EXCVADDR: 0x0000001c  LBEG    : 0x400d80e0  LEND    : 0x400d80e7  LCOUNT  : 0x00000000  
20:32:47.698 -> 
20:32:47.698 -> 
20:32:47.698 -> Backtrace: 0x400d8998:0x3ffca0d0 0x400d30be:0x3ffca0f0 0x400db0bd:0x3ffcb310
20:32:47.698 -> 
20:32:47.698 -> 
20:32:47.698 -> 
20:32:47.698 -> 
20:32:47.698 -> ELF file SHA256: 4b2b5883b6b43d05
C++ XML Arduino ESP32 tinyXML2

评论


答: 暂无答案