0

我正在使用 libxml2.so 在 LINUX 平台上解析 C 中的 XML 文件。我的 XML 格式如下所述。我可以在文件中拥有任意数量的帐户。在有人在论坛上建议我之后,我第一次使用 libxml。我能够解析我只有一个帐户的文件。如果我有多个帐户,我不明白如何实施。任何人以前在 Linux 上的 C、libxml 中实现过这样的东西。

<ACCOUNT>
  <ACCOUNT_NO> 123 </ACCOUNT_NO>
  <NAME> XYZ </XYZ>
  <STATE> GA </STATE>
</ACCOUNT>

<ACCOUNT>
  <ACCOUNT_NO> 223 </ACCOUNT_NO>
  <NAME> ABC </XYZ>
  <STATE> FL </STATE>
</ACCOUNT>
4

1 回答 1

1

根据 XML 定义,如果您有更多 < ACCOUNT>,则需要在所有 < ACCOUNT> 标记周围加上一个环绕标记 fe < ACCOUNTS>。

如果你有这个,你可以“进入”孩子,你可以 while() 在 ->next 节点上。

EDITH:我想你使用的是 DOM 模型。但是,如果您有很多 (!) < ACCOUNT>,出于内存原因,您应该切换到 SAX。DOM 将 (D) 文档构建到内存中 (O) 对象的完整 (M) 映射。

在 SAX 中,您为每个开始标记和结束标记和数据构建了一个状态机,该状态机在文件/内存读取完成时触发。

EDITH 2:如果您必须找到一个特殊值,您应该考虑将键值(account_no?)放入像 <ACCOUNT no="123"> <NAME><XYZ> <STATE>FL</STATE> 这样的属性中< /帐户>

于 2012-05-24T16:17:03.507 回答