libxml2笔记

113 篇文章 1 订阅
3 篇文章 0 订阅

最近用了一下libxml2这个xml解析库,功能太强大了。

这儿有一个文章介绍得不错:http://blog.csdn.net/armman/article/details/1739281


1. add exist xml to a big xml as children.

我用的时候主要是想把一个xml文件加入到另一个xml中做sub xml. 也就需要用到xmlAddChild()这个方法。 那么如何把xml文件转化为xmlNodePtr呢?首先把xml在内存中构建起来,然后得到root node,这样就得到xmlNodePtr了,代码如下:

        xmlDocPtr subdoc;
        subdoc = xmlParseDoc([self.ContentArea xmlString]);
        xmlNodePtr xmlContent = xmlDocGetRootElement(subdoc);
        
        xmlAddChild(nameNode, xmlContent);

其中xmlString是NSString的一个category方法, self.ContentArea返回NSString  *类型,  nameNode是xmlNodePtr类型,就是你要加入的node的father node.

- (const xmlChar *)xmlString
{
	return (xmlChar *)[self UTF8String];
}

2. get descendants of one node and parse to string


  NSString *str = nil;

  if (xmlNode_ != NULL) {

    xmlBufferPtr buff = xmlBufferCreate();
    if (buff) {

      xmlDocPtr doc = NULL;
      int level = 0;
      int format = 0;

      int result = xmlNodeDump(buff, doc, xmlNode_, level, format);

      if (result > -1) {
        str = [[[NSString alloc] initWithBytes:(xmlBufferContent(buff))
                                        length:(xmlBufferLength(buff))
                                      encoding:NSUTF8StringEncoding] autorelease];
      }
      xmlBufferFree(buff);
    }
  }

  // remove leading and trailing whitespace
  NSCharacterSet *ws = [NSCharacterSet whitespaceAndNewlineCharacterSet];
  NSString *trimmed = [str stringByTrimmingCharactersInSet:ws];


其中xmlNode_是xmlNodePtr类型。

这个库功能太强大,快试试吧。









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值