gpt4 book ai didi

c - 如何在c中使用libxml2根据属性对xml文件进行分类

转载 作者:行者123 更新时间:2023-11-30 17:57:57 25 4
gpt4 key购买 nike

我的任务是将 xml 内容区分为组,例如我有两个 xml 文件

<?xml version="1.0"?>
<marks>
<firstname>john</firstname>
<lastname>peter</lastname>
<subject name="english" marks="30">pass</heading>
</marks>

<?xml version="1.0"?>
<marks>
<firstname>james</firstname>
<lastname>cameron</lastname>
<subject name="english" marks="30" degree="masters">pass</heading>
</marks>

所以我需要解析上面的示例xml文件,并需要将它们分组,并计算硕士生、博士生、学士生的数量

每个组都会在元素部分具有附加属性,例如对于硕士生学科元素“将具有属性学位对于博士生,他们将具有特化属性

我可以获取 xml 文件的属性并将其编码在 c 函数中,表示如果我们有属性名称学位,则将他们视为硕士生,但还有其他方法吗?基于xml请求构建DTD,并仅使用libxml2来验证DTD并区分请求(我必须通过使用libxml2库来弄清楚,还不知道)

随着不同类型的 xml 请求数量的增加,我无法对它们进行硬编码以编写多个 if 循环。

可以为特定类型的请求创建一个 dtd,并仅使用一行代码来验证该请求,但现在确定这确实可能......

请求您给出您的想法。

最佳答案

我理解标题给出的问题:“如何在 c 中使用 libxml2 xml 解析基于 DTD 验证 xml”。回答这个问题很容易。它实际上是 Dtd validation with libxml2 的重复项。并应因此而关闭。

但是随着描述的出现,事实证明问题是完全不同的。您可能需要一些项目设计方面的帮助。也许你应该稍微改变一下标题?

至于你的设计:你为什么不想使用if?您希望无需重新编译应用程序即可更改它吗?所以你需要把所有的情况放在一个配置文件中。阅读该文件并采取相应行动。

尝试回答设计部分:

也可以为每种类型的请求提供单独的 dtd,但是您必须依次根据所有 dtd 验证 xml。如果性能成本可以接受,那么你可以走这条路。所有 dtd(或 xsd 模式)都可以在初始化阶段读入内存,然后针对 xml 示例进行尝试,直到验证为止。

要检查您的 xml 是否包含给定元素中的给定属性,您还可以使用 libxml 中的 XPath。请参阅this questionXPath examples 。关注xmlXPathEvalExpression用法。

关于c - 如何在c中使用libxml2根据属性对xml文件进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12553830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com