public Row() { rowNode = (TableRow) newTag(TableRow.class); rowNode.setChildren(new NodeList()); Tag endNode = new TableRow(); endNode.setTagName("/" + rowNode.getTagName().toLowerCase()); rowNode.setEndTag(endNode); }
public Row(CompositeTag rowNode) { this.rowNode = rowNode; NodeList nodeList = rowNode.getChildren(); for (int i = 0; i < nodeList.size(); i++) { Node node = nodeList.elementAt(i); if (node instanceof TableColumn) cells.add(new Cell((TableColumn) node)); } }
private void setExecutionResult(ExecutionResult executionResult) { NodeList cells = rowNode.getChildren(); for (int i = 0; i < cells.size(); i++) { Node cell = cells.elementAt(i); if (cell instanceof Tag) { Tag tag = (Tag) cell; tag.setAttribute("class", executionResult.toString(), '"'); } } }
/** * Accept tags with children acceptable to the filter. * * @param node The node to check. * @return <code>true</code> if the node has an acceptable child, <code>false</code> otherwise. */ public boolean accept(Node node) { CompositeTag tag; NodeList children; boolean ret; ret = false; if (node instanceof CompositeTag) { tag = (CompositeTag) node; children = tag.getChildren(); if (null != children) { for (int i = 0; !ret && i < children.size(); i++) if (getChildFilter().accept(children.elementAt(i))) ret = true; // do recursion after all children are checked // to get breadth first traversal if (!ret && getRecursive()) for (int i = 0; !ret && i < children.size(); i++) if (accept(children.elementAt(i))) ret = true; } } return (ret); }
private void appendCell(Cell newCell) { rowNode.getChildren().add(newCell.getColumnNode()); cells.add(newCell); }
private void scanPage() throws IOException, ParserException, ParseException { URL u = new URL(this.url); HttpURLConnection conn = (HttpURLConnection) u.openConnection(); Parser parser = new Parser(conn); System.setProperty("sun.net.client.defaultConnectTimeout", "30000000"); // jdk1.4换成这个,连接超时 System.setProperty("sun.net.client.defaultReadTimeout", "30000000"); // jdk1.4换成这个,读操作超时 // con.setConnectTimeout(5000);//jdk 1.5换成这个,连接超时 // con.setReadTimeout(5000);//jdk 1.5换成这个,读操作超时 parser.setEncoding("UTF-8"); NodeFilter filter = new NodeClassFilter(CompositeTag.class); NodeList tags = parser.extractAllNodesThatMatch(filter); SimpleNodeIterator iter = tags.elements(); CompositeTag tag = null; while (iter.hasMoreNodes()) { tag = (CompositeTag) iter.nextNode(); String id = tag.getAttribute("id"); String cls = tag.getAttribute("class"); if ((tag instanceof LinkTag)) { LinkTag lt = (LinkTag) tag; if (cls == null) { continue; } if (cls.startsWith("gae-click*Product-Page*Breadcrumb*Category")) { this.category = lt.getStringText(); continue; } if (cls.startsWith("gae-click*Product-Page*Breadcrumb*Sub-Category")) { this.subCategory = lt.getStringText(); continue; } if (cls.startsWith("gae-click*Product-Page*Breadcrumb*Brand")) { this.brand = lt.getStringText(); continue; } if (cls.startsWith("gae-click*Product-Page*PrForm*Free-Shipping")) { this.freight = "Free Shipping!"; } else if (cls.equalsIgnoreCase("link fn")) { this.pname = lt.getStringText(); continue; } } else if ((tag instanceof LabelTag)) { LabelTag lt = (LabelTag) tag; if ((id != null) && (id.startsWith("label")) && (cls != null) && (cls.startsWith("d"))) { String l = lt.getLabel(); l = l.replace("\n", ""); int idx = l.indexOf(40); if (idx > 0) { l = l.substring(0, idx); } this.dimNames.put(cls, l); } } else if (!(tag instanceof SelectTag)) { if ((tag instanceof Span)) { if ((id != null) && (id.equalsIgnoreCase("sku"))) { String sku = tag.getStringText(); this.pid = sku.substring(sku.indexOf(35) + 1); } } else if ((tag instanceof Bullet)) { Bullet b = (Bullet) tag; String text = b.getStringText().trim(); if (text.startsWith("Weight")) { int idx = text.indexOf(":"); this.weight = text.substring(idx + 1).trim(); } } else if ((tag instanceof Div)) { Div div = (Div) tag; if (cls == null) { continue; } if (cls.equalsIgnoreCase("description")) { StringBuilder sb = new StringBuilder(); BulletList bullets = (BulletList) div.getChild(0); SimpleNodeIterator bls = bullets.elements(); while (bls.hasMoreNodes()) { Node n = bls.nextNode(); if ((n instanceof Bullet)) { Bullet bl = (Bullet) n; sb.append(bl.getStringText()); } } this.intro = sb.toString(); } } else if ((this.items == null) && ((tag instanceof ScriptTag))) { this.items = readScript((ScriptTag) tag); } } } }