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;
}
}
}
现在属性“后文“包含”更多文字“。
这不是一个正统的解决方案,但它适用于我。
我没有评论你在第2步中提到的代码,它也适用于我。谢谢。 –