std::string 对象的 xml 字符串
获取 std::string 类型的 XML 字符串并将其转换为内存中 XML 对象的最有效方法是什么,对象结构并不重要,我所追求的是我是否需要去逐个字符地遍历字符串并挑选出所有部分,或者是否有一些更简单的方法?
What would be the most effective way to take an XML string of type std::string and convert it to an in-memory XML object, the object structure is of no importance, what I'm after is whether I'd need to go through the string char by char and pick out all the pieces or if there is some easier way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
最简单的方法可能是使用库来做到这一点。
如果您想自己执行此操作,则需要解析包含 XML 代码的字符串。有很多方法可以做到这一点;最简单的可能是递归下降解析器。
The easiest way is probably to use a library to do that.
If you want to do that yourself, you'll need to parse the string containing XML code. There are many ways to do that; easiest is probably a recursive-descent parser.
看看阿拉比卡:http://www.jezuk.co.uk/cgi -bin/view/arabica 在所有 XML 库/包装器中,我知道它是最 std 友好的。
Take a look at Arabica: http://www.jezuk.co.uk/cgi-bin/view/arabica Of all XML libraries/wrappers I am aware of it is most std friendly.
尝试一下 Expat,它结构紧凑、用户友好且免费:
http://expat.sourceforge.net/
Try Expat, compact, user-friendly and free:
http://expat.sourceforge.net/
您可以使用 MSXML< /a> 为此,它将获取字符串并生成 DOM(文档对象模型)表示形式。文档还可以,但这不是最容易使用的库。当然仅限于Windows。
优点——可靠、应用广泛。
缺点 - 您必须在一定程度上学习 COM 编程模型。使用起来不是最直观的。
一个更简单的选项是 xerces。示例文件解析代码此处,还有其他示例。我在不同的工作中使用了这个和 MSXML。
You could use MSXML for this, it will take the string and produce a DOM (Document Object Model) representation. Documentation is OK but this is not the easiest library to use. WIndows only of course.
Pros - reliable, widely used.
Cons - you have to learn COM programming model to a degree. Not the most intuitive to use.
A simpler option would be xerces. Sample file parse code here, there are other samples as well. I've used both this and MSXML in different jobs.
使用 libxml2。不是一个高度复杂的库并且易于使用。可移植,用 C 编写,但可以绑定到其他可用语言,并且有大量示例可供使用和学习。
Use libxml2. Not a highly complicated library and easy to use. Portable, written in C but bindings to other languages available, and loads of examples to use and learn from.