- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经为此工作了一段时间,但在 Stack Overflow 上没有找到任何相关内容。我正在使用一个旨在捕获 HTML 代码片段的解析器。根据代码(下文进一步),该文件的大小呈指数级增长,并且正在捕获我需要的字段 (li),但也非常重复,因为它一遍又一遍地捕获相同的数据。
这是我正在读取的文件(完整文件实际上有 100 多行,但本文仅包含 3 行):
Name: J0719
Description: - Hop Counts: 2
- State: 3
Name: J0716
Description: - Hop Counts: 3
- State: 2
Name: J0718
Description: - Hop Counts: 1
- State: 5
Name: J0726
Description: - Hop Counts: 8
- State: 4
我的完整代码在这里:
package ReadXMLFile_part2;
import java.io.*;
import org.jsoup.Jsoup;
import org.jsoup.select.Elements;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import java.util.Enumeration;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.HTML.Tag;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.parser.ParserDelegator;
public class ReadXMLFile_part2 {
public static void main(String[] args) throws Exception {
PrintStream out = new PrintStream(new FileOutputStream("C:/XML_UltraEdit/XML_Sandbox/NetBeans_Java_Project/results2.xml"));
System.setOut(out);
System.out.println("*** JSOUP ***");
File input = new File("C:/XML_UltraEdit/XML_Sandbox/NetBeans_Java_Project/output2_TEST.html");
Document doc = null;
thử {
doc = Jsoup.parse(input,"UTF-8", "http://www.w3.org/1999/xhtml" );
} catch (IOException ex) {
Logger.getLogger(ReadXMLFile_part2.class.getName()).log(Level.SEVERE, null, ex);
}
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
//For loops to capture the fields in the file
Element bracket = doc.getElementsByTag("bracket").first();
Elements trs = bracket.getElementsByTag("description");
for (Element description : trs) {
for (Element li : description.getAllElements()) {
System.out.println(li.text());
}
}
System.out.println();
//read a line from the console
String lineFromInput = in.readLine();
//output to the file a line
out.println(lineFromInput);
ra ngoài.đóng();
}
}
我的问题是如何解析输入文件中由“li”标记的字段,以便我的输出文件为每个“li”标记都有一个新行。理想的输出应该是这样的(并防止无限循环):
Name: J0719
Hop Counts: 2
State: 3
Name: J0716
Hop Counts: 3
State: 2
Name: J0718
Hop Counts: 1
State: 5
Name: J0726
Hop Counts: 8
State: 4
感谢并感谢对此提供的任何帮助!
9月2日更新:虽然 previousElementSibling 在单独使用时很有用,但在尝试拉出“Description”字段时,我需要另一个某种类型的嵌套循环(否则 previousElementSibling 每次都会连续拉出第一个前一个元素)。我发现更快的解决方法是只更改原始代码中的标签,使其现在看起来像下面的代码:
更新的 XML 文件:
Name: J0719
Description: - Hop Counts 2
- State: 3
Name: J0716
Description: - Hop Counts 3
- State: 2
Name: J0718
Description: - Hop Counts 1
- State: 5
Name: J0719
Description: - Hop Counts 8
- State: 4
除了以下“for”循环之外,原始代码中的其他所有内容都保持不变
//Updated Code:
//For loops to capture the (li) fields in the file
Elements brackets = doc.getElementsByTag("bracket");
for (Element bracket : brackets) {
Elements lis = bracket.select("li");
for (Element li : lis){
System.out.println(li.text());
}
phá vỡ;
}
System.out.println();
唯一的另一件事是,在我看到文件大小停止增长后,我必须在执行后一段时间手动按下“停止”运行按钮。但我仍然看到输出文件生成了所需的结果。
1 Câu trả lời
如果我正确理解你的问题,你会遇到这样一个事实:xml 中的 tên
Và bracket
节点不是父节点的子节点,而是紧随其后。我认为当您拥有 bracket
元素时获取正确的 tên
元素的解决方案是使用 JSOUP's DOM navigation methods ,即 previousElementSibling()
您的循环可能如下所示:
Elements brackets = doc.getElementsByTag("bracket");
for (Element bracket : brackets) {
Element lis = bracket.select("li");
Element name = bracket.previousElementSibling();
System.out.println(name.text());
for (Element li : lis){
System.out.println(li.text());
}
}
关于java - 使用 Java 解析 HTML 数据(DOM 解析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25491424/
Câu hỏi dành cho người mới bắt đầu sử dụng Android. Được rồi, tôi đã ghi thành công vào tập tin. Ví dụ. //Lấy tên tệp String filename = getResources().getString(R.string.filename
Tôi đã lưu cùng một hình ảnh vào /data/data/mypackage/img/ và bây giờ tôi muốn hiển thị toàn màn hình này, tôi đã thử sử dụng ACTION_VIEW để hiển thị ứng dụng chuẩn Android nhưng nó không hiển thị hình ảnh từ /data/data/mypackage/img/
Tôi đang sử dụng Xcode 9, Swift 4. Tôi đang cố gắng hiển thị một hình ảnh trong ImageView từ một URL bằng cách sử dụng mã sau: func getImageFromUrl(sourceUrl: String) -> UII
Tôi gặp sự cố khi cài đặt genymotion trên Ubuntu. Chủ yếu là tôi không thể gỡ lỗi cơ sở dữ liệu của mình vì tôi không thể thấy nội dung của thư mục /data/ thông qua DBMS trong eclipse hay thông qua adb trong shell. Không hiển thị
Tôi đang cố gắng đăng một số dữ liệu JSON bằng PHP. Nhưng có điều gì đó không ổn. Đây là html của tôi -- {% cho x trong tập hợp %}
Tôi nhận thấy kết quả khác nhau từ cả hai cách tiếp cận. Tại sao lại như vậy? Tôi biết những gì đang xảy ra trên lm nhưng không thể hiểu được những gì đang xảy ra trên tslm. > thư viện(dự báo) > set.seed(2) > tts lm(t
Tôi không chắc tại sao điều này lại xảy ra! Tôi có một lớp được spring data elasticsearch và spring data jpa sử dụng nhưng tôi gặp lỗi khi thử chạy ứng dụng của mình. Lỗi khi tạo
Trong biểu đồ vega này, nếu tôi tải xuống và chuyển đổi flare-dependencies.json bằng lệnh jq sang csv sau, jq -r '(map(keys) | add | unique) as
Tôi đang nộp một dự án trong đó tôi phải tạo một cơ sở dữ liệu mysql có chứa một bảng. Mọi thứ đều ổn nên tôi chỉ muốn kiểm tra xem làm thế nào để gửi tất cả các tệp nén của mình cho người khác sử dụng máy tính khác. Về cơ bản, làm thế nào để tôi tạo tệp cơ sở dữ liệu của mình cho một máy tính khác,
Tôi có một ứng dụng ghi các tập tin văn bản vào bộ nhớ trong. Tôi muốn xem xét kỹ hơn máy tính của mình. Tôi chạy Toast.makeText để hiển thị đường dẫn và nó ghi: /data/data/my-package nhưng khi tôi vào An của Android Studio
Tôi thích cách trình giả lập Genymotion tải Android với tốc độ đáng kinh ngạc như vậy. Tốc độ rất tốt, nhưng hiệu suất vẫn còn đôi chút chập chờn. Cách truy cập trình giả lập Genymotion từ File Explorer trong Eclipse
Tôi cần thay đổi định dạng của hộp văn bản trong Silverlight. Dữ liệu được liên kết thông qua MVVM. Ví dụ, có một thuộc tính int và tôi thêm 1 vào giá trị trong bộ thiết lập và gọi OnPropertyChanged
Tôi muốn gửi yêu cầu tới Youtube Data API, nhưng tôi không cần truy cập vào bất kỳ thông tin người dùng nào. Tôi chỉ muốn duyệt các video công khai và hiển thị video dựa trên một thuật ngữ tìm kiếm. Tôi có thể làm điều này mà không cần sự cho phép không? Câu trả lời hay nhất YouTube
Tôi đã thiết lập ứng dụng Twilio và muốn gửi thông tin cập nhật cho mọi người nhưng không muốn trả lời từng tin nhắn riêng lẻ. Tôi chỉ muốn họ gọi điện nếu họ gặp vấn đề. Mọi thứ đều hoạt động tốt nhưng tôi muốn hiển thị văn bản đến khi tôi gửi để đảm bảo không bỏ sót bất kỳ vấn đề nào. Tôi đang sử dụng p
Tôi có một trang web có biểu mẫu (hiện tại là HTML thuần túy, nhưng chúng tôi đang chuyển sang JQuery). Luồng như sau: Lấy dữ liệu đầu vào của người dùng --- 5 số nguyên Gọi dịch vụ web qua REST Chạy một số phép tính ở phía máy chủ... và tạo ra
Giả sử chúng ta có một tệp có tên là configuration.js và khi chúng ta nhìn vào bên trong, chúng ta thấy: 'use strict'; var profile = { "project": "%Projec
Đây là một phần mở rộng của Câu hỏi trước: Bây giờ tôi có thể trả về dữ liệu JSON thành công từ Bộ điều khiển CI của mình, nó trả về: {"results":[{"id":"1","Sourc
Có cách nào hiệu quả để xóa toàn bộ dung lượng lưu trữ tài liệu của CBL trong iOS không? Tôi có thắc mắc về vấn đề này hoặc nếu ai đó biết cách làm cho ứng dụng hoạt động như thể nó vừa được cài đặt thì sẽ rất hữu ích. Chúng tôi đang làm việc để đảm bảo rằng việc đăng xuất của chúng tôi thực sự thiết lập ứng dụng thành
Tôi có một ứng dụng Rails giao tiếp với các ứng dụng Rails khác để chèn dữ liệu. Tôi đang sử dụng phương thức jQuery $.post để chèn dữ liệu. Ứng dụng Rails khác của tôi hiển thị 200 OK cho phần chèn. Nhưng trong
Tôi đang chạy thử nghiệm đơn vị cho lệnh gọi API phục vụ yêu cầu đăng bài. Tôi đang chuyển nội dung yêu cầu và phải trả về phản hồi dưới dạng dữ liệu tài khoản. Nhưng tôi chỉ nhận được lỗi khẳng định Lưu ý: Dữ liệu được lấy từ Azure spec.js const accou
Tôi là một lập trình viên xuất sắc, rất giỏi!