C API重新排序XML元素?

时间:2012-01-12 05:00:52

标签: c xml

C中是否有可用于重新排序XML元素的API?

示例输入文件如下所示:

<A> a</A>
<B>b</B>
<C>
    <a1> a1</a1> 
     <a2>a2</a2>


    d 我正在获得如上所述的输入,但我想像下面那样格式化xml(我将在xslt中指定xml元素应该出现在xslt输出中的顺序。)

<A> a</A>
<B>b</B>
<D>D</D>
<C>
    <a1> a1</a1> 
     <a2>a2</a2>


C中有没有可以做到这一点的API?或者有没有更好的方式来排序XML元素。?

感谢, 马杜

2 个答案:

答案 0 :(得分:1)

libxml2库将执行此操作。

您可以Xpath queries来创建XML数据的子集:一个用于节点 某些属性,另一个节点没有相同属性,然后重复处理具有两个或更多节点的子集,直到获得一组父节点partition,您可以按所需顺序打印出来。

例如, with 属性结果,例如,示例中的C节点。 没有属性结果的是节点ABD。现在您有两个结果集,您可以搜索而不设置以获得B结果。在三个查询结束时,您有三个XML节点子集:{A, D}{C}{B}

掌握这些结果后,使用新订单{A, D, B, C}创建文档只需按顺序打印出子集。

答案 1 :(得分:0)

解决这个问题的显而易见的方法是使用一个XSLT处理器,例如libxslt C库,它与libxml2密切相关(实际上,几乎是其中的一部分)。可能是最流行的XML处理库。

使用XSLT样式表,您可以使用教科书重构XML 文档的方式。

或者,您也可以使用libxml2手动执行此操作。