gpt4 book ai didi

C++:使用 Libxml 解析 XML 时出现问题

转载 作者:行者123 更新时间:2023-11-28 08:26:33 24 4
gpt4 key购买 nike

我在使用 libxml2 库解析 xml 文件时遇到了很多麻烦。

我已经排除了以前的类似问题,但遇到了另一个问题。

这是问题代码:

class SSystem{
public:
//Constructors
SSystem(){};
//Make SSystem from XML Definition. Pass ptr to node
SSystem(xmlNodePtr Nptr, xmlDocPtr Dptr){
name = wxString((char *)xmlGetProp(Nptr, (xmlChar*)"name"), wxConvUTF8);
//Move to next level down, the <general> element
Nptr = Nptr->xmlChildrenNode;
//Move one more level down to the <radius> element
Nptr = Nptr->xmlChildrenNode;
//Get Radius value
if (!xmlStrcmp(Nptr->name, (const xmlChar *)"radius")) {
char* contents = (char*)xmlNodeGetContent(Nptr);
std::string test1 = std::string(contents);
radius = wxString(contents, wxConvUTF8);
}
}

一个 xmlNodePtr 和一个 xmlDocPtr 都被传递给构造函数,它只需要一个属性(“名称”)就可以正常工作,但现在在进一步解析时会窒息。

这是一段有问题的 xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<Systems>
<ssys name="Acheron">
<general>
<radius>3500.000000</radius> <-- I am trying to get this value (3500).
<stars>300</stars>
<asteroids>0</asteroids>
<interference>0.000000</interference>
<nebula volatility="0.000000">0.000000</nebula>
</general>

它编译正常,但在加载构造函数时崩溃(我知道是因为,如果我注释掉 if 条件和 char* contents = (char*)xmlNodeGetContent(Nptr->xmlChildrenNode),它运行正常。

我尝试了很多不同的东西(删除了 Nptr->xmlChildrenNode 之一),但没有任何效果。

怎么了?

最佳答案

这个:

char* contents = (char*)xmlNodeGetContent(Nptr->xmlChildrenNode)

应该是这样的:

char* contents = (char*)xmlNodeGetContent(Nptr)

关于C++:使用 Libxml 解析 XML 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3903190/

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