
[英]Compiling a C++ code including PETSc libraries. make: No rule to make target error message
[英]Parsing XML in C without libraries. [closed]
谁能给我概述仅使用标准库在独立C中解析xml的过程。
我想以此作为实践,因为这实际上是一个有用的项目。
我看到的大多数示例似乎都大量使用了指针以及结构数组。 因此,任何提示或大纲将不胜感激。
好吧,您将看到两个不同的事物。 首先是实现这一目标的高级策略。 第二个是完成该过程所需的数据结构和其他特定于语言的实现细节。
对于高层次的部分,一个好的起点是学习有限自动机。 它们是用于计划分析和其他高度依赖状态的作业的非常强大的概念工具,可以很容易地转换为代码。
对于实现细节...好吧,已经有人指出了树结构。 基本上,XML基本上就是一棵树。
它非常简单,您只需阅读文本并将其构建到对象树中即可。
如果您具有以下简单的XML:
<A>Hello<B x="1">World</B></A>
<A>Another Object A</A>
您可以构建如下内容:
Obj_1
Name = "A"
Text = "Hello"
--> Obj_2
Name = "B"
Text = "World"
Param_1 (Name = "x", Value = "1")
Obj_3
Name = "A"
Text = "Another Object A"
使用这样的简单类对象,您可以构建树(我意识到您曾问过要用常规C对其进行解析,但您也将其标记为C ++,所以我的示例在C ++中):
class Obj
{
public:
struct Param{
std::string name;
std::string value;
};
std::string text;
std::string name;
std::list<Param> params;
std::list<Obj *> children;
};
然后,您需要添加一些帮助程序,以便在值字符串(即XML)之间转换为整数,双精度数,布尔值等,并清理多余的空格。 您可能还希望添加一些代码来获取所有名为“ XYZ”的根对象,因此您不必一直手动循环。
这应该给您一个从哪里开始的想法。 确实没有那么困难。
如果您不想使用现有的库,则需要自己构造XML解析器。 您无法有效地手动解析XML。
我建议您学习以下基本概念:
免费参加这个很棒的课程: https : //www.coursera.org/course/compilers
如果您不受时间的限制,那么可以以此为学习机会。
祝好运!
扫描xml文件并检查多达('>'和!='\\ n')并开始存储值直至'<'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.