Iphone 将块引号中的链接转换为纯文本

Iphone 将块引号中的链接转换为纯文本,iphone,objective-c,xpath,Iphone,Objective C,Xpath,所以,我最近问了很多Xpath问题。 对不起,我才刚刚开始使用它,我正在做一个很难的项目。 你看,目前我正在像这样解析HTML(不是复制粘贴,只是一个示例): 把文字放进去。 它工作得很好,尽管它非常令人沮丧。我需要手动检查,然后手动组合br前后的字符串,添加换行符,等等。但它仍然有效。直到文本中出现链接,即。那么代码是这样的: <span id="no153434"></span> <blockquote>Text here.<br/>Text.

所以,我最近问了很多Xpath问题。 对不起,我才刚刚开始使用它,我正在做一个很难的项目。 你看,目前我正在像这样解析HTML(不是复制粘贴,只是一个示例):

把文字放进去。 它工作得很好,尽管它非常令人沮丧。我需要手动检查
,然后手动组合br前后的字符串,添加换行符,等等。但它仍然有效。直到文本中出现链接,即。那么代码是这样的:

<span id="no153434"></span>
<blockquote>Text here.<br/>Text.<br/><font class = "unkfunc"><a href="linkhere" class="link">linkhere</a></font></blockquote>

此处为文本。
文本。

我完全不知道从这里到哪里去,因为链接作为一个完全独立的项目(两次)包含在数组中。至少有了br,我知道应该把它搬到哪里去。经过这么多努力,你真的打算放弃这个项目。

你可以使用这个XPath来获取元素中的文本:
//span[以(@id,'no')开头]/如下::*[1][name()='blockquote']//text()

因此,您将收到以下结果:

  • 文本在这里
  • 文本
  • 链接处

  • 如果只需要文本节点和br:

     //span
      [starts-with(@id, 'no')]/
      following::*[1][name()='blockquote']
       //node()
       [ count(.|..//text()) = count(..//text())
         or 
         name()='br'
       ]
    
    返回

    Text here.
    <br />
    Text.
    <br />
    linkhere
    
    这里的文本。
    
    文本
    链接处
    答案是不要将XPath用于此类工作。
    使用Objective-C-HTML-Parser可以轻松地工作1000000倍。

    但是我没有br,所以没有换行符,所以每一行都是分开的。@Darcy,那么你想要得到什么结果呢?老实说,我希望XPath可以将所有内容从一个BLOCKQUOTE集中到同一个字符串中,但这样做会让人非常痛苦。添加链接几乎是不可能的,因为我无法判断链接应该是单独的,还是在另一段文本的末尾或开头。放弃此项目。为什么不1)检索blockquote元素,2)将内部br替换为“\n”,3)获取所有文本节点?
     //span
      [starts-with(@id, 'no')]/
      following::*[1][name()='blockquote']
       //node()
       [ count(.|..//text()) = count(..//text())
         or 
         name()='br'
       ]
    
    Text here.
    <br />
    Text.
    <br />
    linkhere