- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经尝试了一些事情并且到达了同一个地方。基本上在调用first_node()
之后我得到 NULL
或乱七八糟的 xterm 的无意义的二进制文件,然后我需要关闭并重新打开它。
首先获取数据。我用两种方式做了这件事
<强>1。 RapidXML file<>
#include <xml/rapidxml.hpp> //--XML Parser for configuration files
#include <xml/rapidxml_utils.hpp>
//....
file<> xml_l(name_layout.c_str());
class xml_document<> doc_l;
class xml_node<> * node;
//....
doc_l.parse<parse_full>(xml_l.data());
//....
node = doc_l.first_node("window");
if(!node) cerr << "F F F F" << endl;
<强>2。静态变量 可能不是最好的方法。但这似乎是等效的,并且是我遇到之前的原始方法 rapidxml::file<>
.几乎一样,只是在函数中获取文件。返回的指针传递给xml_document::parse()
.
char * file_get_contents (const string &file) {
ifstream ifile;
static vector< vector<char> > xml;
vector<char> data;
ifile.exceptions( ifstream::failbit | ifstream::badbit );
try {
ifile.open(file.c_str(),ios::in | ios::binary);
ifile.seekg(0, ios::end);
data.resize(((int)ifile.tellg())+1);
ifile.seekg(0, ios::beg);
ifile.read(&data[0], data.size()-1);
ifile.close();
data.back() = '\0';
xml.push_back(data);
return const_cast<char *>(&((xml.back())[0]));
} catch (ifstream::failure e) {
cerr << "Could not open file: " << file.c_str() << endl;
}
}
我可以获取任一方法返回的指针并使用 cout
显示整个文件.这两种情况我都得到 NULL
从 first_node("window")
返回.我得到我的审查 cerr
打印后,我的提示缩进并且 xterm 无法按如下所述工作。如果我不带参数调用它,我会得到一个元素节点。如果我尝试显示名称或值,我可以看到一个字符(从 name()
永远不会到 value()
)。看起来有点像白色椭圆形的黑色问号,xterm 停止运行。下一行包含我缩进的提示。按键什么都不做。
尝试删除 class
之前xml_document/node<>
,没有改变任何东西。
来自 XML 文件的样本
<!-- language: lang-xml -->
<layout>
<window id="app_header">
<head>
<title value="Script Manager" />
<color
fgcolor="yellow"
bgcolor="blue"
intensity="high"
/>
</head>
<height min="1" max="1" value="1" />
<width value="*" />
<color
fgcolor="default"
bgcolor="default"
/>
</window>
<!--Few more window sections described. Same format. Different height values and colors -->
</layout>
最佳答案
window
不是您的 xml 文件的根节点,layout
是。您需要先获取该节点,然后获取 window
作为它的子节点。
xml_node<> rootNode = doc_l.first_node("layout", 6);
xml_node<> windowNode = rootNode.first_node("window", 6);
Rapidxml 将 xml 解析为层次结构,因此您需要将其作为树来遍历。
关于c++ - RapidXML:段错误; first_node() 返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35727908/
我正在使用 RapidXML 读取 XML 文件、解析它、执行一些操作并将其写回。 标签内任何用引号书写的文本,都以扩展形式用引号打印。 是否有任何标志可以防止引号和其他特殊字符的扩展。 欢迎任何建议
今天我试图从我的项目中查找内存泄漏然后我遇到了下面的示例代码 std::string VersionValue("1.0"); std::string EncodingValue("UTF-8");
我最近一直在使用 Rapidxml 并遇到了以下问题。当我尝试添加属性时,这些属性不是硬编码的,而是在程序运行时生成的,rapidxml 插入了错误的字符。 这是我的代码示例: void Pro
我是 rapidXML 的新手,但第一印象并不积极,我制作了简单的 Visual Studio 6 C++ Hello World 应用程序并将 RapidXML hpp 文件添加到项目和 main.
ifstream fin("tree.xml"); if (fin.fail()) return 1; fin.seekg(0, ios::end); size_t lengt
我过去使用 RapidXML 时遇到了几个问题,但这个问题让我很困惑。 我正在创建应用程序事件时间戳的日志,外部程序可以在重播中读取在正确时间发生在原始应用程序中的任何音频。 在应用程序初始化时,会正
因此,我最近掌握了 RapidXML,将其用作在我的程序中解析 XML 的一种方式,我一直主要将其用作一种乱七八糟的方式,但我遇到了一些非常奇怪的问题,我真的很挣扎追查。试着和我一起解决这个问题,因为
我正在使用 RapidXML 来解析一个 xml 字符串。这是我的字符串: std::string str(" 2016-10-18T08:51:50.657+01:0000 "); 下面是我尝试解析
我试图以一种肮脏的方式使用 rapidxml 附加一个非常大的子树,利用 value 方法 rapidxml::xml_node<>* node = allocate_node(rapidxml::n
因此,在 RapidXML 中,我试图遍历我的文件以从某些 tileset 节点获取数据: rapidxml::xml_node<> *root_node = doc.first_node("map"
我正在使用 RapidXML 解析一个 xml 文件,其中包含一些我想在我的 C++ 程序中使用的变量。我能够读取有效节点,但我想添加一些错误处理,例如,如果节点名称拼写错误。 这是我的文件的一个工作
我在 PC 上的 VS2012 中使用 rapidXML 和 C++。我已经解析了 XML 文件,但现在我想单独打印出属性值。我通常可以使用下面的代码来做到这一点。但是,此方法需要知道节点名称和属性名
使用 RapidXML 我需要创建和销毁大量 XML 节点和 XML 属性。我在内存池文档中读到,没有办法使用 allocate_string 函数释放在内存池中创建的单个字符串。 但是这样内存池的大
RapidXml 的文档说 Pool maintains RAPIDXML_STATIC_POOL_SIZE bytes of statically allocated memory. Until s
我在使用 RapidXML 解析字符串时遇到了一些问题。我从 Eclipse 中收到一个错误,声称解析函数不存在。 make all Building file: ../search.cpp Invo
我有一个非常恼人的问题,我花了很多时间来解决它。我在 C++ 中使用 rapidXML 来解析 XML 文件: xml_document<> xmlin; stringstream input; //
我自己研究了 rapidXML 源代码并设法读取了一些值。现在我想更改它们并将它们保存到我的 XML 文件中: 解析文件并设置指针 void SettingsHandler::getConfigFil
我在我的一个项目中一直在使用 RapidXML。一切都很顺利,直到我决定用它来写出 xml。我的代码或多或少如下: //attempt to open the file for writing std
我正在尝试使用 C++ 应用程序中的 RapidXML 库在控制台中打印 XML 文档数据。 我正在遵循 RapidXML 手册 link here ,但我遇到了编译时错误。 这是我的 C++ 代码:
我有一个 XML 文件,我应该使用 RapidXML 和 C++ 对其进行解析。该文件是系统发育树。每个节点都有一个包含 1-3 个子节点的节点,每个子节点都有值。节点可以是学名、通用名或等级。我的问
我是一名优秀的程序员,十分优秀!