Công cụ Grep cho XML [đã đóng]


22

Tôi đang tìm kiếm một công cụ tốt để thực hiện các hoạt động giống như grep trên XML - ví dụ: chỉ trích xuất một số thuộc tính nhất định.

Grep chính nó không thể xử lý nó - bất kỳ công cụ tương đương DFA nào cũng chỉ có thể xử lý các kết quả không đệ quy và tôi có thể đệ quy.

Tôi đã thử xgrep , nhưng nó không ổn định, và tôi muốn một công cụ ổn định và đáng tin cậy.

Có khuyến nghị nào không?

EDIT: Tôi thích các công cụ nguồn mở hoạt động tốt trong Linux.

Câu trả lời:


21

XMLStarlet (Wikipedia) là một công cụ dòng lệnh gần với grep. Nó là phần mềm nguồn mở (giấy phép MIT) và hoạt động tốt trên Linux và Windows.

Trang web XMLStarlet mô tả nó như sau.

XMLStarlet là một tập hợp các tiện ích dòng lệnh (công cụ) có thể được sử dụng để chuyển đổi, truy vấn, xác thực và chỉnh sửa các tài liệu và tệp XML bằng cách sử dụng bộ lệnh shell đơn giản theo cách tương tự được thực hiện cho các tệp văn bản đơn giản bằng UNIX grep, sed, các lệnh awk, diff, patch, tham gia, v.v.

Gói Debian / Ubuntu được đặt tên xmlstarlet. Nhưng hãy cẩn thận: Trái ngược với những gì manpage nói, tệp nhị phân có tên xmlstarlettrong Debian / Ubuntu chứ không phải xml.

Ngoài ra còn có các tệp nhị phân Windows trên SourceForge.

Để có phần giới thiệu nhỏ, hãy xem Bắt đầu làm việc với XMLStarlet của IBM .


Xóa dấu gạch chéo từ liên kết đầu tiên.
Bkkbrad

Tôi không thể làm cho nó hoạt động ... Nó không bao giờ khớp với bất kỳ xpath nào ngoại trừ '/' (toàn bộ tài liệu), điều này khá vô giá trị :(
Hendy IINA

@HendyI Girls - Bạn có chắc chắn đó không phải là cách bạn đang cố gắng sử dụng xpath? (Giống như XML của bạn có một không gian tên mặc định mà bạn không chiếm?)
Daniel Haley

Tôi đã cố gắng sao chép nó, nhưng có vẻ như kho lưu trữ bị hỏng.
Hola Soy Edu Feliz Navidad

5

Các XPath cú pháp trong ngôn ngữ khác nhau là tốt nhất cho việc tìm kiếm mọi thứ trong xml. Trong thực tế, một trong những công cụ được các nhà sản xuất xgrep khuyên dùng về cơ bản là một trình phân tích cú pháp Perl XML chấp nhận đầu vào XPath.


5

Một công cụ hoạt động trong Linux là xml_grep . Nó hoàn toàn hiểu XML và không phải là một công cụ từng dòng.

xml_grep được bao gồm dưới dạng một công cụ độc lập trong gói XML :: Twig . Chức năng grepping khá mạnh mẽ vì nó hỗ trợ các thông số kỹ thuật của XPath .

Dòng lệnh mẫu (trích xuất các bài đăng được chỉnh sửa sau giữa tháng hai từ Kết xuất dữ liệu triology ):

xml_grep -p --cond="row[@LastEditDate>'2010-02-14']"  posts.xml  > lateEditedPosts.xml

Cài đặt dễ dàng. Hoặc

  • sudo cpan -i "XML::Twig", như được mô tả trong sách nấu ăn xml_grep được tham chiếu bên dưới.

hoặc là


Thêm thông tin:

Giới thiệu tốt nhất tôi đã tìm thấy cho xml_grepxml_grep cookbook , khoảng hai trang. Khác:


Tôi đã sửa một liên kết bị hỏng, nhưng liên kết Data Dump cũng bị hỏng. Tôi sẽ xem những gì tôi có thể làm.
Peter Mortensen


0

Tôi khuyên bạn KHÔNG nên sử dụng một công cụ giống như grep trên XML, nhưng sử dụng một thư viện để phân tích cú pháp XML thay thế.
Chính xác thì bạn cần nó để làm gì? Ngôn ngữ lập trình nào? Tôi nghĩ rằng trình phân tích cú pháp XML tích hợp .NET sẽ dễ dàng phù hợp với công việc nếu bạn sẵn sàng viết chương trình cho nó.

Cập nhật : đối với Linux, một thư viện trình phân tích cú pháp XML nổi tiếng là libxml2 .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.