TBXML textForElement问题

问题描述:

我想解析器与TBXML库适用于iOS的HTML,我想获得“更多的文本”价值这块HTML的:TBXML textForElement问题

<div> 
<a href="/url/1"> 
    <strong>value</strong> 
</a> 
more text 
</div> 

我已经使用这个代码,但它似乎并没有工作:

//Assume that "div" is a TBXMLElement* for this div 
NSString* content = [TBXML textForElement:div]; 
//Returns @"" when the value @"more text" is expected... 

我的代码有什么问题?

好吧,我已经修改了TBXML图书馆和我已经解决了问题...如果有人有相同的问题,试试这个:

1)TBXMLElement与名称创建文件TBXML.h属性NSString * afterText。

2)在文件TBXML.m搜索此代码,并评论它:

// if parent element has children clear text 
       if (parentXMLElement && parentXMLElement->firstChild) 
        parentXMLElement->text = 0; 

3)步骤1的代码之前写这样的代码:

if (parentXMLElement && parentXMLElement->firstChild){ 

      //if the next string does not content... 
      const char * parentNametag = [[TBXML elementName:parentXMLElement] UTF8String]; 
      char * finalTag = (char *)malloc(sizeof("</")+sizeof(parentNametag)+sizeof(">")); 
      strcpy(finalTag,"</"); 
      strcat(finalTag,parentNametag); 
      strcat(finalTag,">"); 

      char * elementTextStart = elementStart;//parentXMLElement->text; 
      char * elementTextEnd = elementTextStart; 

      elementTextEnd = strstr(elementStart,finalTag); 

      if(elementTextEnd != NULL){ 
       long textLength = strlen(elementTextStart) - strlen(elementTextEnd) ; 
       if (textLength > 0){ 
        afterTextStart = (char *)malloc(textLength*sizeof(char)); 
        memcpy(afterTextStart, elementTextStart,(textLength*sizeof(char))); 
        parentXMLElement->afterText = afterTextStart; 
       } 
      } 

     } 

现在属性“后文“包含”更多文字“

这不是一个正统的解决方案,但它适用于我。

+0

我没有评论你在第2步中提到的代码,它也适用于我。谢谢。 –