0
回答
libxml2笔记
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

最近用了一下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类型。

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










原文链接:http://blog.csdn.net/favormm/article/details/7369155
<无标签>
举报
长平狐
发帖于5年前 0回/122阅
顶部