Skip to content

Commit 94fc9c7

Browse files
author
xiaohuo
committed
Merge branch 'feature/fix'
2 parents 0f3909a + 39b1aa7 commit 94fc9c7

File tree

4 files changed

+34
-3
lines changed

4 files changed

+34
-3
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ maven依赖,全版本请参见[release信息](https://github.com/zhegexiaohuozi/
3232
<dependency>
3333
<groupId>cn.wanghaomiao</groupId>
3434
<artifactId>JsoupXpath</artifactId>
35-
<version>2.4.1</version>
35+
<version>2.4.2</version>
3636
</dependency>
3737
```
3838

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</parent>
88
<groupId>cn.wanghaomiao</groupId>
99
<artifactId>JsoupXpath</artifactId>
10-
<version>2.4.1</version>
10+
<version>2.4.2</version>
1111
<modelVersion>4.0.0</modelVersion>
1212
<packaging>jar</packaging>
1313
<name>JsoupXpath</name>

src/main/java/org/seimicrawler/xpath/core/node/Text.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.jsoup.nodes.Element;
1313
import org.jsoup.select.Elements;
1414

15+
import java.lang.reflect.Field;
16+
import java.lang.reflect.Method;
1517
import java.util.HashMap;
1618
import java.util.List;
1719
import java.util.Map;
@@ -65,6 +67,13 @@ public void head(Node node, int depth) {
6567
}
6668
Element data = new Element(Constants.DEF_TEXT_TAG_NAME);
6769
data.text(textNode.getWholeText());
70+
try {
71+
Method parent = Node.class.getDeclaredMethod("setParentNode",Node.class);
72+
parent.setAccessible(true);
73+
parent.invoke(data,textNode.parent());
74+
} catch (Exception e) {
75+
//ignore
76+
}
6877
CommonUtil.setSameTagIndexInSiblings(data,index);
6978
res.add(data);
7079
}

src/test/java/org/seimicrawler/xpath/JXDocumentTest.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,11 @@ public void testA(){
222222
}
223223
}
224224

225+
/**
226+
* fix https://github.com/zhegexiaohuozi/JsoupXpath/issues/52
227+
*/
225228
@Test
226-
public void FixTextBehaviorTest(){
229+
public void fixTextBehaviorTest(){
227230
String html = "<p><span class=\"text-muted\">分类:</span>动漫<span class=\"split-line\"></span><span class=\"text-muted hidden-xs\">地区:</span>日本<span class=\"split-line\"></span><span class=\"text-muted hidden-xs\">年份:</span>2010</p>";
228231
JXDocument jxDocument = JXDocument.create(html);
229232
List<JXNode> jxNodes = jxDocument.selN("//text()[3]");
@@ -232,7 +235,26 @@ public void FixTextBehaviorTest(){
232235
Assert.assertEquals("2010", actual);
233236
List<JXNode> nodes = jxDocument.selN("//text()");
234237
String allText = StringUtils.join(nodes,"");
238+
Assert.assertEquals("分类:动漫地区:日本年份:2010",allText);
235239
logger.info("all = {}",allText);
236240
}
237241

242+
/**
243+
* fix https://github.com/zhegexiaohuozi/JsoupXpath/issues/44
244+
*/
245+
@Test
246+
public void fixTextElNoParentTest(){
247+
String test="<div class='a'> a <div>need</div> <div class='e'> not need</div> c </div>";
248+
JXDocument j = JXDocument.create(test);
249+
List<JXNode> l = j.selN("//div[@class='a']//text()[not(ancestor::div[@class='e'])]");
250+
Set<String> finalRes = new HashSet<>();
251+
for (JXNode i : l){
252+
logger.info("{}",i.toString());
253+
finalRes.add(i.asString());
254+
}
255+
Assert.assertFalse(finalRes.contains("not need"));
256+
Assert.assertTrue(finalRes.contains("need"));
257+
Assert.assertEquals(4, finalRes.size());
258+
}
259+
238260
}

0 commit comments

Comments
 (0)