如何使用BoostptreeC++解析值中包含HTML标记的XML
How to parse an XML that has HTML tags in its value using Boost ptree C++
我想使用Boost Ptree 解析以下XML
<MsgTxt>
<Abc>123</Abc>
<Text>This is my <b>Text</b></Text>
</MsgTxt>
但是,当我遍历XML并使用Message = v.second.get_value <std::string>("Text");
时,HTML标记及其内容会被截断。我得到的价值是"这是我的"。
我如何解析HTML标签,如,并通过boost ptree
从XML解析器的角度来看,<文本>和<b> 。<b> 部分因此成为属性树中的另一个属性。如果布局得当,它看起来是这样的:
<MsgTxt>
<Abc>123</Abc>
<Text>This is my
<b>Text</b>
</Text>
</MsgTxt>
根据你的问题,你真的想要<b> 是内容,而不是XML标记。如果是这样,您应该将其编码为内容,而不是标记。这很简单:
<MsgTxt>
<Abc>123</Abc>
<Text>This is my <b>Text</b></Text>
</MsgTxt>
XML解析器会将这些<
和>
转换回正确的文本。
如果编码不正确,如果标签不平衡,比如,你也会遇到问题
<MsgTxt>
<Abc>123</Abc>
<Text>This is my <b>Text</b><br></Text>
</MsgTxt>
这是不正确的XML,XML解析器将完全拒绝解析它。同样,这可以通过使用适当的内容编码来避免。
为了正确编码,请确保对以下字符进行编码:
< <
> >
& &
" "
' '
有趣的是,相同的标记规则在stackoverflow编辑器中也适用,我不得不返回并替换我的<通过<
使其正确显示;-)
相关文章:
- Cppcheck生成xml转储文件
- 如何在pugixml中获取节点的内部XML
- 如何使用tinyxml2从XML加载父实体和子实体
- boost xml parsingl将xml的路径作为变量发送
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 使用 Tinyxml 在 xml 中添加一个子子项
- 增强基于 XML class_id的反序列化
- 在 c++ 中使用 vtd-xml 时,如何摆脱 EOFException?
- 简单的 HTML 验证器
- 防止在C++中选择错误文件时提升 xml 解析器崩溃
- c++ 读取 xml 文件的内容
- 删除 XML 文件中的子节点C++
- 如何在 html 页面中插入 cgi 应用程序的输出?
- 使用 RapidXML 更新C++中的 XML 节点和属性值
- 在Cmake构建CmakeList.txt中读取/解析XML文件
- 带有 HTML 报告生成器的 c++ XML 解析器的体系结构
- 有人可以解释为什么我的XML解析器跳过这些HTML元素的原因
- 如何使用BoostptreeC++解析值中包含HTML标记的XML
- 使用QXmlStreamReader读取XML文档中的嵌入式HTML
- 是否有任何Api在android为ms office word(.doc/.docx)到(图像/html/xml/pdf