Cho chuỗi "<table><tr><td>Hello World!</td></tr></table>"
, cách nào (dễ nhất) để có được một phần tử DOM đại diện cho nó?Làm cách nào để phân tích cú pháp chuỗi HTML trong Java?
Trả lời
Tôi tìm thấy nơi này (không nhớ nơi nào):
public static DocumentFragment parseXml(Document doc, String fragment)
{
// Wrap the fragment in an arbitrary element.
fragment = "<fragment>"+fragment+"</fragment>";
try
{
// Create a DOM builder and parse the fragment.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document d = factory.newDocumentBuilder().parse(
new InputSource(new StringReader(fragment)));
// Import the nodes of the new document into doc so that they
// will be compatible with doc.
Node node = doc.importNode(d.getDocumentElement(), true);
// Create the document fragment node to hold the new nodes.
DocumentFragment docfrag = doc.createDocumentFragment();
// Move the nodes into the fragment.
while (node.hasChildNodes())
{
docfrag.appendChild(node.removeChild(node.getFirstChild()));
}
// Return the fragment.
return docfrag;
}
catch (SAXException e)
{
// A parsing error occurred; the XML input is not valid.
}
catch (ParserConfigurationException e)
{
}
catch (IOException e)
{
}
return null;
}
Làm thế nào để bạn tận dụng các khả năng HTML chế biến được xây dựng vào Java? Bạn có thể không biết rằng Swing chứa tất cả các lớp cần thiết để phân tích cú pháp HTML. Jeff Heaton chỉ cho bạn cách thực hiện.
bạn có thể sử dụng Trình phân tích cú pháp HTML, thư viện Java được sử dụng để phân tích cú pháp HTML theo kiểu tuyến tính hoặc lồng nhau. Nó là một công cụ mã nguồn mở và có thể được tìm thấy trên SourceForge
Tôi đã sử dụng Jericho HTML Parser nó OSS, phát hiện (tha thứ) đúng định dạng thẻ và là nhẹ
Dưới đây là một cách:
import java.io.*;
import javax.swing.text.*;
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;
public class HtmlParseDemo {
public static void main(String [] args) throws Exception {
Reader reader = new StringReader("<table><tr><td>Hello</td><td>World!</td></tr></table>");
HTMLEditorKit.Parser parser = new ParserDelegator();
parser.parse(reader, new HTMLTableParser(), true);
reader.close();
}
}
class HTMLTableParser extends HTMLEditorKit.ParserCallback {
private boolean encounteredATableRow = false;
public void handleText(char[] data, int pos) {
if(encounteredATableRow) System.out.println(new String(data));
}
public void handleStartTag(HTML.Tag t, MutableAttributeSet a, int pos) {
if(t == HTML.Tag.TR) encounteredATableRow = true;
}
public void handleEndTag(HTML.Tag t, int pos) {
if(t == HTML.Tag.TR) encounteredATableRow = false;
}
}
Nếu bạn có chuỗi chứa HTML bạn có thể sử dụng Jsoup thư viện như thế này để nhận các phần tử HTML:
String htmlTable= "<table><tr><td>Hello World!</td></tr></table>";
Document doc = Jsoup.parse(htmlTable);
// then use something like this to get your element:
Elements tds = doc.getElementsByTag("td");
// tds will contain this one element: <td>Hello World!</td>
Chúc may mắn!
Thư viện này chỉ cần thực hiện công việc, cảm ơn! – negstek
- 1. Phân tích cú pháp HTML HTML
- 2. PHP tags phân tích cú pháp HTML
- 3. libxml2 Phân tích cú pháp HTML
- 4. Phân tích cú pháp HTML trong perl
- 5. chuỗi phân tích cú pháp html với jquery
- 6. UIWebView đang tải chuỗi html được phân tích cú pháp
- 7. Chuỗi JavaScript phân tích cú pháp trong Java
- 8. Cách xử lý mã hóa trong lxml để phân tích cú pháp chuỗi html đúng cách?
- 9. Chuỗi phân tích cú pháp thành Double.NaN
- 10. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 11. Trình phân tích cú pháp HTML
- 12. Phân tích html với trình phân tích cú pháp SAX
- 13. Lỗi phân tích cú pháp HTML
- 14. Phân tích cú pháp HTML với Erlang
- 15. Cách phân tích cú pháp chuỗi json trong Android?
- 16. BeautifulSoup HTML bảng phân tích cú pháp
- 17. php chuỗi phân tích cú pháp xml
- 18. Không thể phân tích cú pháp html sử dụng lxml XPath phân tích cú pháp
- 19. Làm cách nào để phân tích cú pháp HTML trong vb.net
- 20. Ocaml chuỗi phân tích cú pháp để làm cho cây
- 21. Làm cách nào để phân tích cú pháp chuỗi tác nhân người dùng trong Perl?
- 22. JSONKit phân tích cú pháp chuỗi json
- 23. Làm cách nào để phân tích cú pháp HTML bằng html5lib và truy vấn HTML được phân tích cú pháp bằng XPath?
- 24. Làm cách nào để phân tích cú pháp URL web?
- 25. Chuỗi phân tích cú pháp thành TimeSpan
- 26. làm cách nào để phân tích cú pháp tệp dtd
- 27. Làm cách nào để phân tích cú pháp logic boolean?
- 28. Làm cách nào để phân tích cú pháp mảng numpy?
- 29. Chuỗi định dạng phân tích cú pháp
- 30. Cách phân tích cú pháp JSONArray trong Java với Json.simple?
Điều gì sẽ xảy ra nếu tôi muốn đặt tất cả các phần dữ liệu vào một mảng trong lớp ngoài, thay vì in chúng ra? – CodyBugstein
@Imray, hãy tiếp tục, bạn có sự cho phép của tôi để đưa chúng vào một số loại bộ sưu tập thay vì in chúng :) –
Tôi đặt chúng trong một bộ sưu tập bên trong lớp 'HTMLTableParser', và sau đó tạo ra một phương thức getter để lấy chúng. Đó có phải là cách tốt nhất để làm điều đó không? – CodyBugstein