- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 Android 应用程序找到合适的火车出发时间 - 我正在使用 jsoup 连接到我本地的火车时刻表网站(时刻表以简单的表格形式给出,其中一行代表一个车站,一列代表一个车站)代表预定的火车)并捕获特定车站的行。
Here is an example of a row from the timetable.
我的问题是,制作该表的人使用了三种不同类型的符号来表示火车跳过车站:“-”符号、“|”符号和空格。这是一个问题,因为我试图对火车时间数组进行排序,但我也想跟踪一天中有多少趟火车运行(由列给出)。
由于我用空格分隔数组的结果,因此最终结果将不能代表正在运行的火车数量,因为它只是跳过包含空白空格的列。
这是我正在使用的代码:
// jsoup method that captures the text in a row, and returns it as a string, with
// the results separated by a space
Element departure = doc.getElementById("row_3");
deptext = departure.text();
// Split the large string into an array
String[] depList = deptext.split(" ");
for (int i=0; i < depList.length; i++) {
if (arrList[i].equals("-"))
continue;
else if (arrList[i].equals("|"))
continue;
else {
// do something
}
如何修改我的代码,以便数组 deplist
能够考虑行中由空格填充的条目?
最佳答案
您需要找到有关您正在使用的 DOM 的更多信息。然而,做出一些假设,我至少可以笼统地回答。
deptext = departure.text();
提供一个字符串,缺少空列条目的空格。 JSoup API Docs中对此进行了描述,有点模糊。在 Element.text() 下,指出此方法:
Gets the combined text of this element and all its children.
如果该行的空元素中没有文本,则不会返回任何文本作为占位符。不过,您可以在返回的 DOM 中找到您需要的提示。
对于此示例,我们假设此处返回文档元素
Element departure = doc.getElementById("row_3");
是一个标准的表格行元素,由 tr 标签定义,并且该元素包含出发时间的子元素是每个表格数据,或 td、html 标签。然后,我们可以使用 Element
的以下方法创建 Elements
,该方法从 departure
调用:
Elements elements = departure.getElementsByTag("td");
然后您可以迭代每个出发元素
for (Element element : elements) {
if(element.hasText()) {
// This element has more than whitespace in it
} else {
// This element is empty, or contains only whitespace
}
}
通过这种方式,您将识别作为“row_3”标识的元素的子元素的每个 td 元素。但是,您必须研究 html 的源代码,以确定您真正想要使用 row_3 的哪些子级。
[编辑] 事实证明,id 为“row_3”的元素的子元素是 div 元素而不是 td 元素。为了在离开时使用选择器填充 Elements 对象,请使用:
Elements elements = departure.getElementsByTag("div");
关于java - 如何修改火车时刻表解析代码以考虑跳过特定车站的火车?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21085077/
我是一名优秀的程序员,十分优秀!