作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用适用于 iOS 的 TBXML 库解析 HTML,并且我想获得这段 HTML 的“更多文本”值:
<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) 在文件 TBXML.h 中为 TBXMLElement 创建一个名为 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;
}
}
}
现在属性“after text”包含“more text”。
这不是一个正统的解决方案,但它对我有用。
关于objective-c - TBXML textForElement 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977313/
对于这个元素,我总是得到 null:Rua Santo Ubaldo, 28 - São Paulo xml文件: 1 Woods Bar
我正在尝试使用适用于 iOS 的 TBXML 库解析 HTML,并且我想获得这段 HTML 的“更多文本”值: value more text 我用过这段代码,但它似乎不起作用:
我是一名优秀的程序员,十分优秀!