gpt4 book ai didi

java - 如何修改火车时刻表解析代码以考虑跳过特定车站的火车?

转载 作者:行者123 更新时间:2023-12-01 13:38:09 24 4
gpt4 key购买 nike

我正在尝试为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com