2012-10-19 65 views
1

我想解析器與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... 

我的代碼有什麼問題?

回答

1

好吧,我已經修改了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步中提到的代碼,它也適用於我。謝謝。 –