C 使用libxml2读取XML

C 使用libxml2读取XML,c,xml,libxml2,C,Xml,Libxml2,我使用libxml2.so在LINUX平台上用C解析XML文件。我的XML格式如下所述。我可以在文件中有任意数量的帐户。在论坛上有人建议我使用libxml之后,我第一次使用libxml。我能够解析文件,我只有一个帐户。如果我有多个帐户,我不知道如何实现。以前有人在Linux上用C、libxml实现过这样的东西 <ACCOUNT> <ACCOUNT_NO> 123 </ACCOUNT_NO> <NAME> XYZ </XYZ>

我使用libxml2.so在LINUX平台上用C解析XML文件。我的XML格式如下所述。我可以在文件中有任意数量的帐户。在论坛上有人建议我使用libxml之后,我第一次使用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>

123
XYZ
GA
223
基础知识
佛罗里达州

根据XML定义,如果您有更多的s,则需要在所有-标记周围添加一个标记f.e.

如果有,可以“进入”子节点,然后可以在->下一个节点上执行while()

伊迪丝:我想你用的是DOM模型。但是如果您有许多(!)s,出于内存原因,您应该切换到SAX。DOM将(D)文档的完整(M)应用构建到内存中的(O)对象

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


<伊迪丝> 2:如果你必须找到一个特殊的值,你应该考虑把关键字值(Actudio No)放进一个属性中,比如帐户No.=“123”> Name > XYZ >状态> FL < /St> <帐户> < /P> + 1。你的意思是我应该有这样的东西吗。。234?我还有一个问题,我们能否验证是否有结束标记,f.e标记是否有相应的?如果是,我可以使用哪个函数?如果使用XMLParseDocument()或ParseMemory(),如果文件/内存无效,则会出现错误。如果您使用SAX,您的状态机应该能够处理这个问题。是的!也找到了这个..
http://www.jamesh.id.au/articles/libxml-sax/libxml-sax.html#introduction
让我们