Tôi có một bộ sưu tập các tệp XML và một số trong số đó là khá lớn (lên đến ~ 50 triệu nút phần tử). Tôi đang sử dụng xmllint
để xác thực các tệp đó, hoạt động khá độc đáo ngay cả đối với những tệp lớn nhờ API truyền trực tuyến.Làm cách nào để thực hiện truy vấn XPath dòng lệnh trong các tệp XML khổng lồ?
xmllint --loaddtd --stream --valid /path/to/huge.xml
Gần đây tôi đã biết rằng xmllint
cũng có khả năng thực hiện truy vấn dòng lệnh XPath, rất tiện dụng.
xmllint --loaddtd --xpath '/root/a/b/c/text()' /path/to/small.xml
Tuy nhiên, các truy vấn XPath này không hoạt động đối với các tệp XML lớn. Tôi chỉ nhận được thông báo "Đã bị giết" sau một thời gian. Tôi đã cố gắng bật API truyền trực tuyến, nhưng điều này chỉ dẫn đến không có đầu ra nào cả.
xmllint --loaddtd --stream --xpath '/root/a/b/c/text()' /path/to/huge.xml
Có cách nào để bật chế độ phát trực tuyến khi thực hiện truy vấn XPath bằng cách sử dụng xmllint
? Có cách nào khác tốt hơn để thực hiện các truy vấn XPath dòng lệnh cho các tệp XML lớn không?
thử '--shell' lựa chọn cho tương tác (chỉ với các đường dẫn tập tin xml) – flafoux
Tôi cố gắng mở vỏ tương tác cho một tập tin rất lớn, nhưng nó sẽ sụp đổ ("Giết", cũng giống như trong trường hợp không sử dụng '--stream') trước khi tôi có thể nhập bất kỳ lệnh nào. – MRA
http://superuser.com/questions/543881/efficiently-extracting-a-few-data-from-a-large-xml-file –