Bộ chọn truy vấn nút-html-trình phân tích cú pháp
XPath sử dụng các biểu thức đường dẫn để chọn các nút hoặc tập hợp nút trong tài liệu XML. Nút được chọn bằng cách đi theo một đường dẫn hoặc các bước Show
Tài liệu Ví dụ XMLChúng tôi sẽ sử dụng tài liệu XML sau trong các ví dụ bên dưới
Chọn nútXPath sử dụng các biểu thức đường dẫn để chọn các nút trong tài liệu XML. Nút được chọn bằng cách đi theo một đường dẫn hoặc các bước. Các biểu thức đường dẫn hữu ích nhất được liệt kê bên dưới ExpressionDescriptionnodenameChọn tất cả các nút có tên "nodename"/Chọn từ nút gốc//Chọn các nút trong tài liệu từ nút hiện tại khớp với lựa chọn bất kể chúng ở đâu. Chọn nút hiện tại. Chọn cha của nút hiện tại@Chọn thuộc tínhTrong bảng dưới đây, chúng tôi đã liệt kê một số biểu thức đường dẫn và kết quả của các biểu thức Biểu thức đường dẫnResultbookstoreChọn tất cả các nút có tên "hiệu sách"/hiệu sáchChọn phần tử gốc hiệu sáchGhi chú. Nếu đường dẫn bắt đầu bằng dấu gạch chéo ( / ) thì nó luôn đại diện cho một đường dẫn tuyệt đối đến một phần tử cửa hàng sách/sáchChọn tất cả các phần tử sách là con của cửa hàng sách//bookChọn tất cả các phần tử sách bất kể chúng ở đâu trong tài liệubookstore//bookChọn tất cả các phần tử sách là hậu duệ của phần tử cửa hàng sách, bất kể chúng ở đâu dưới phần tử cửa hàng sách//Vị ngữCác vị từ được sử dụng để tìm một nút cụ thể hoặc một nút chứa một giá trị cụ thể Vị ngữ luôn được đặt trong dấu ngoặc vuông Trong bảng dưới đây, chúng tôi đã liệt kê một số biểu thức đường dẫn với các vị từ và kết quả của các biểu thức Biểu thức đường dẫnResult/bookstore/book[1]Chọn phần tử sách đầu tiên là phần tử con của phần tử hiệu sáchGhi chú. Trong IE 5,6,7,8,9 nút đầu tiên là [0], nhưng theo W3C, đó là [1]. Để giải quyết vấn đề này trong IE, hãy đặt SelectionLanguage thành XPath Đây là một ngã ba biên dịch thành các mô-đun esm để sử dụng trực tiếp trong trình duyệt. Bạn cần tải gói javascript "he" vào trình duyệt Trình phân tích cú pháp HTML nhanhTrình phân tích cú pháp HTML nhanh là trình phân tích cú pháp HTML rất nhanh. Cái nào sẽ tạo ra một cây DOM được đơn giản hóa, với sự hỗ trợ truy vấn phần tử cơ bản. Theo thiết kế, nó dự định phân tích các tệp HTML lớn với giá thấp nhất, do đó hiệu suất là ưu tiên hàng đầu. Vì lý do này, một số HTML không đúng định dạng có thể không phân tích cú pháp chính xác, nhưng hầu hết các lỗi thông thường đều được khắc phục (ví dụ:. Kiểu HTML4 không đóng htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877842, htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877843, v.v.) Cài đặtnpm install --save node-html-parser
Hiệu suấtNhanh hơn htmlparser2 htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.87784 Đã thử nghiệm với htmlparser-benchmark Cách sử dụngimport { parse } from 'node-html-parser'; const root = parse(' var HTMLParser = require('node-html-parser'); var root = HTMLParser.parse(' phương pháp toàn cầuphân tích cú pháp (dữ liệu [, tùy chọn])Phân tích cú pháp dữ liệu đã cho và trả về gốc của DOM đã tạo
hợp lệ(dữ liệu[, tùy chọn])Phân tích cú pháp dữ liệu đã cho, trả về true nếu dữ liệu đã cho hợp lệ và trả về false nếu không Phương thức phần tử HTMLHTMLElement#trimRight()Cắt phần tử từ bên phải (trong khối) sau khi nhìn thấy mẫu trong TextNode HTMLElement#removeWhitespace()Xóa khoảng trắng trong cây con này HTMLElement#querySelectorAll(bộ chọn)Truy vấn bộ chọn CSS để tìm các nút phù hợp Ghi chú. chỉ hỗ trợ bộ chọn htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877845, htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877846, htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877840. Và không hoạt động giống như htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877841 tiêu chuẩn vì nó sẽ ngừng tìm kiếm cây con sau khi tìm thấy kết quả phù hợp HTMLElement#querySelector(bộ chọn)Truy vấn CSS Selector để tìm nút phù hợp HTMLElement#appendChild(nút)Nối một nút con vào nút con HTMLElement#insertAdjacentHTML(ở đâu, html)phân tích cú pháp văn bản đã chỉ định dưới dạng HTML và chèn các nút kết quả vào cây DOM tại một vị trí đã chỉ định HTMLElement#setAttribute(key. Chuỗi giá trị. chuỗi)Đặt thuộc tính htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877842 thành htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877843 HTMLElement#setAttributes(attrs: Record)Đặt thuộc tính của phần tử HTMLElement#removeAttribute(key. chuỗi)Xóa thuộc tính htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877843 HTMLElement#getAttribute(khóa. chuỗi)Nhận thuộc tính htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877843 HTMLElement#exchangeChild(oldNode. Nút, nút mới. Nút)Đổi con đã cho lấy con mới HTMLElement#removeChild(nút. Nút)Xóa nút con HTMLElement#toString()Tương tự như bên ngoàiHTML HTMLElement#set_content(nội dung. chuỗi. Nút. Nút[])Đặt nội dung. Lưu ý. Không đặt nội dung của nút gốc HTMLElement#remove()Xóa phần tử hiện tại Thuộc tính phần tử HTMLHTMLElement#textNhận giá trị văn bản chưa thoát của nút hiện tại và các phần tử con của nó. Thích htmlparser :26.7111 ms/file ± 170.066 cheerio :24.2480 ms/file ± 17.1711 parse5 :13.7239 ms/file ± 8.68561 high5 :7.75466 ms/file ± 5.33549 htmlparser2 :5.27376 ms/file ± 8.68456 node-html-parser:2.85768 ms/file ± 2.877846. (chậm lần đầu tiên) |