2017-02-09 90 views
-1

我希望提取elementB,然后元素CD之前停止 - 即不提取的内容elementCelementD.text。但是,我只知道如何提取整个div文本,使用Contents().Not来忽略elementC,但elementD仍然被捕获。GoLang - GoQuery HTML插入失败

这是我目前使用的代码:

GoLang:

capturedText := s.Find("div").Contents().Not(".label").Text() 

而忽略elementC,但不elementD,它没有外部标记。

HTML:

<li><span><h2>elementA</h2></span><div>elementB<br><span class="label">elementC</span>elementD</div></li> 

如何只捕获的<div>elementB,而不是elementCelementD

编辑:

我试图关闭div标签,像这样:

s.Find(".label").BeforeHtml(`</div>`) 

,也试过:

s.Find(".label").BeforeHtml(`</div><div>`) 

和访问第一div,不顾第二div现在应该有elementD

jp, _ := s.Find("div").First().Html() 

但是,这是行不通的。看来</div>一定不能是一个开放标签 - 它需要是<div>...</div>才能正确插入。但这不是我所需要的,我只需要</div></div><div>正确关闭第一个div

解决此问题的适当方法是什么?

回答

0

既然不能用“破”节点编辑HTML,我已经选择了这一点:

s.Find(".label").BeforeHtml(`|_SEPARATOR_|`) // Insert text separator into Html 
    preCleanNode := s.Find("div").Contents().Not(".label").Text() //Get Html as Text 
    cleanNode := strings.Split(preCleanNode, `|_SEPARATOR_|`) // Split text based on Text Separator 
    outputString := cleanNode[0] // Output our wanted text