RapidXML 给出空的 CDATA 节点

2023-12-02

我编写了下面的代码来获取 CDATA 节点值,我得到了节点的名称,但值是空白的。

我将解析标志更改为 parse_full,但它也不起作用。

如果我从 XML 中手动删除“”,它会给出预期的值,但在解析之前删除它不是一个选项。

代码:

#include <iostream>
#include <vector>
#include <sstream>
#include "rapidxml/rapidxml_utils.hpp"

using std::vector;
using std::stringstream;
using std::cout;
using std::endl;

int main(int argc, char* argv[]) {

    rapidxml::file<> xmlFile("test.xml");
    rapidxml::xml_document<> doc;
    doc.parse<rapidxml::parse_full>(xmlFile.data());

    rapidxml::xml_node<>* nodeFrame = doc.first_node()->first_node()->first_node();

    cout << "BEGIN\n\n";

    do {

        cout << "name:  " << nodeFrame->first_node()->name() << "\n";
        cout << "value: " << nodeFrame->first_node()->value() << "\n\n";


    } while( nodeFrame = nodeFrame->next_sibling() );

    cout << "END\n\n";

    return 0;
}

The XML:

<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:c="http://base.google.com/cns/1.0">
<itens>
   <item>
    <title><![CDATA[Title 1]]></title>  
    <g:id>34022</g:id>
    <g:price>2173.00</g:price>
    <g:sale_price>1070.00</g:sale_price>
   </item>
    <item>
        <title><![CDATA[Title 2]]></title>  
        <g:id>34021</g:id>
        <g:price>217.00</g:price>
        <g:sale_price>1070.00</g:sale_price>      
    </item>
</itens>
</rss>


当你使用CDATA,RapidXML 将其解析为层次结构中外部元素“下方”的单独节点。

您的代码通过使用正确获取“标题”nodeFrame->first_node()->name(),但是 - 因为CDATA文本位于单独的元素中,您需要使用它来提取值:

cout << "value: " <<nodeFrame->first_node()->first_node()->value();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RapidXML 给出空的 CDATA 节点 的相关文章

  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • 进程何时获得 SIGABRT(信号 6)?

    C 中进程获得 SIGABRT 的场景有哪些 该信号是否始终来自进程内部 或者该信号可以从一个进程发送到另一个进程吗 有没有办法识别哪个进程正在发送该信号 abort 向调用进程发送SIGABRT信号 就是这样abort 基本上有效 abo
  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 以编程方式检查页面是否需要基于 web.config 设置进行身份验证

    我想知道是否有一种方法可以检查页面是否需要基于 web config 设置进行身份验证 基本上如果有这样的节点
  • 为什么要序列化对象需要 Serialized 属性

    根据我的理解 SerializedAttribute 不提供编译时检查 因为它都是在运行时完成的 如果是这样 那么为什么需要将类标记为可序列化呢 难道序列化器不能尝试序列化一个对象然后失败吗 这不就是它现在所做的吗 当某些东西被标记时 它会
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 如何从 C# 控制器重定向到外部 url

    我使用 C 控制器作为网络服务 在其中我想将用户重定向到外部网址 我该怎么做 Tried System Web HttpContext Current Response Redirect 但没有成功 使用控制器的重定向 http msdn
  • 当前的 c++ 工作草案与当前标准有何不同

    通过搜索该标准的 PDF 版本 我最终找到了这个链接C 标准措辞草案 http www open std org jtc1 sc22 wg21 docs papers 2012 n3376 pdf从 2011 年开始 我意识到我可以购买最终
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 无法将类型“System.IO.Stream”隐式转换为“Java.IO.InputStream”

    我提到了一些类似的问题 但没有一个涉及IO 当我使用时 我在java中使用了相同的代码Eclipse 那次就成功了 但现在我尝试在中使用这段代码Mono for Android C 它不起作用 我正在尝试运行此代码来创建一个InputStr
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • 尚未处理时调用 Form 的 Invoke 时出现 ObjectDisposeException

    我们得到一个ObjectDisposedException从一个电话到Invoke在尚未处理的表格上 这是一些演示该问题的示例代码 public partial class Form2 Form void Form2 Load object
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没

随机推荐

  • SpreadsheetAddRows 在中等大小的查询上失败

    编辑 我更改了名称 因为有一个类似的问题如何修复添加大型查询时 SpreadSheet 添加行函数崩溃的问题 那里描述了我的问题 所以我更简洁地进行了分述 问题是我的查询结果的电子表格添加行以我认为适中的大小 1600 行 27 列 轰炸了
  • 未找到对象 - XAMPP

    我最近在我的笔记本电脑上安装了 XAMPP windows 7 64 位 我刚刚用 HTML 编写了一个非常基本的 Hello World 脚本 但是 当我尝试运行它时 它显示 未找到对象 错误 404 这就是我正在做的 写了剧本 将其保存
  • 更改 tkinter 窗口边框样式

    我想让我的窗框看起来像旧的 windows 95 风格 现在 当我创建窗口时 tkinter 会自动采用我的操作系统 Windows 10 的样式 有办法改变这个吗 不 没有什么特别可以使窗口边框看起来不同 您唯一的选择是完全删除边框 例如
  • NETLOGO:使用上一个刻度的变量

    是否有一些原语可以使用前一个刻度的变量值 我尝试计算一个代理的 价格 变量 我的意思是使用包含其他代理的 价格 变量但来自上一个刻度的公式 不 NetLogo 中没有内置方法可以执行此操作 您最好的选择可能是创建一个名为以下内 容的变量va
  • 将 ioctl() 调用从 unix 移植到 linux,FIONBIO 出错

    我想使用 ioctl 来获取准备读取的字节数 我这样做的方式是 mysocket socket ioctl mysocket FIONBIO zero connect ioctl mysocket FIONREAD numBytes rea
  • 生成 [-1, 1] 范围内的随机数数组

    我正在尝试在 Fortran 中的 2D 数组中生成 1 1 范围内的随机数 我知道为了生成 1 和 1 范围内的随机数 我必须将数字重新调整为 0 2 但我不知道如何填充矩阵x 10 10 with randomReal 这是代码 pro
  • InstallShield 限量版支持 64 位安装程序吗?

    我刚刚开始学习 InstallShield LE 因为它似乎是唯一 官方 支持的安装程序项目 但我有一个简单的问题 我什至无法得到绝对的答案 ISLE 是否支持构建 64 位安装程序 我之所以这么问 是因为我发现至少有两篇文章说这是不可能的
  • 如何将两个不同Spout的输出发送到同一个Bolt?

    我有两个 Kafka Spout 我想将它们的值发送到同一个 Bolt 是否可以 对的 这是可能的 TopologyBuilder b new TopologyBuilder b setSpout topic 1 new KafkaSpou
  • 使用 PHP 以非 ASCII 字符输出日期

    我正在尝试以繁体中文输出日期 我将日期作为 Unix 时间戳 例如 1467244800 我正在做以下事情 我得到的输出是 Unicode 未定义 字符 30 2016 17 T 2016 18 Q G 2015 谁能告诉我我做错了什么 我
  • 使用端口 443 连接到 Heroku

    我是一名大学生 除了80 443之外的所有端口都被封锁 我可以通过以下方式连接到 github Host github com Hostname ssh github com Port 443 git push heroku master给
  • Eclipse 关闭钩子能够停止终止

    我正在开发一个插件 该插件执行外部工具 如果用户在进程正在运行时尝试退出 Eclipse 我必须提供一个确认对话框 有正在运行的进程 你真的想退出吗 如果用户点击No Eclipse 可能不会终止 我刚刚发现 如何挂钩退出命令来清理思考 该
  • Outlook 中 html 电子邮件的显示错误

    我使用以下代码创建了一封 html 电子邮件 div style background color orange max width 600px height 180px margin left auto margin right auto
  • Google Sheet Api get 函数在 nodejs 中返回未定义的值

    function changeData auth sheetId var sheets google sheets v4 sheets spreadsheets values update auth auth spreadsheetId s
  • 增量压缩和一次性压缩有什么区别?

    我正在尝试使用bz2 and or lzmapython 中的包 我正在尝试以 csv 格式压缩数据库转储 然后将其放入zip文件 我让它与这两个包一起使用一次性压缩 其代码如下所示 with ZipFile something zip w
  • 如何使用R中的Leaflet用一条线连接两个坐标

    我正在尝试使用 R 中的 Leaflet 包来绘制放大器并根据下表中的纬度和经度信息连接标记 Observation InitialLat InitialLong NewLat NewLong A 62 469722 6 187194 51
  • D3 Topojson 圆,半径以英里为单位

    假设现有投影 topojson 我想做的是在半径 r 以英里为单位的点 long lat 处创建一个圆 我知道有一个 d3 geo 函数可以实现此目的 但经过一番考虑后 我认为它与我的特定应用程序不太兼容 所以现在我正在寻找使用原生 svg
  • ios - 以编程方式将 .m4a 转换为 .mp3 文件

    这里我有m4a格式的音频 我需要转换成mp3格式 为此 我使用的代码为 void toMp3 NSString m4aFilePath pathToSave NSString mp3FileName NSString stringWithF
  • 从我的 Android 应用程序调用 Google Pay Intent 时出现错误“您已超出银行设置的最大交易金额”

    我在 Android 应用程序中遇到 Google Pay 集成 应用内支付 问题 当我提出交易请求时 我收到错误 您已超出银行设置的最大交易金额 即使这是我的第一笔交易 当我尝试直接从 Google Pay 发送金额时 它起作用了 Thi
  • 监控和维护应用程序在光盘上的大小的解决方案

    我正在构建一个广泛使用 CoreData 的应用程序 并且我的许多模型都具有 UIImage 和 NSData 属性 用于图像和视频 由于将数据直接存储到 CoreData 中并不是一个好主意 因此我构建了一个文件管理器类 该类根据创建的上
  • RapidXML 给出空的 CDATA 节点

    我编写了下面的代码来获取 CDATA 节点值 我得到了节点的名称 但值是空白的 我将解析标志更改为 parse full 但它也不起作用 如果我从 XML 中手动删除 它会给出预期的值 但在解析之前删除它不是一个选项 代码 include