wildcatsの日記

赤羽在住でIT関係の会社の社長やってます。

出来た気がする。

子要素を含むXPath構文からNodeFilterを作る部分は出来てないけど
個人的に必要な範囲なのは出来た気がする。

ParserTemplateTest.java


public class ParserTemplateTest extends TestCase {

public void testParse() throws JaxenException, ParserException {
AnchorTestFinder finder = new AnchorTestFinder();
finder.parse(this.getClass().getClassLoader().getResource("test.html")
.toString(), "a[@href='test']");
LinkTag[] tags = (LinkTag[]) finder.getNodes();
assertNotNull(tags);
assertEquals(2, tags.length);
assertEquals("hoge", tags[0].getLinkText());
assertEquals("bar", tags[1].getLinkText());
}

private final class AnchorTestFinder extends ParserTemplate {

private final List list = new LinkedList();

@Override
protected Handler getHandler() {
return new Handler() {

public void accept(Node node) {
list.add(node);
}

};
}

public Node[] getNodes() {
return this.list.toArray(new LinkTag[list.size()]);
}

}

}

test.html


<HTML>
<HEAD>
</HEAD>
<BODY>
<a href="test">hoge</a>
<a href="">piyo</a>
<a>poyo</a>
<div><a href="test">bar</a>
</div>
</BODY>
</HTML>