2015-06-08 19 views
6

cấu trúc file xml của tôi là như thế nàyLàm cách nào để tìm nạp các nút cụ thể từ XML bằng XPath trong Java?

<?xml version="1.0" encoding="utf-8" ?> 
<book> 
    <chapters> 
     <chapter id="1"> 
      <page id="1" cid= "1" bid = "Book1"> 
       <text>Hi</text> 
      </page> 
      <page id="2" cid= "1" bid = "Book1"> 
       <text>Hi</text> 
      </page> 
     </chapter> 
     <chapter id="2"> 
      <page id="1" cid= "2" bid = "Book1"> 
       <text>Hi</text> 
      </page> 
      <page id="2" cid= "2" bid = "Book1"> 
       <text>Hi</text> 
      </page> 
     </chapter> 
     <chapter id="3"> 
      <page id="1" cid= "3" bid = "Book1"> 
       <text>Hi</text> 
      </page> 
      <page id="2" cid= "3" bid = "Book1"> 
       <text>Hi</text> 
      </page> 
     </chapter> 
    </chapters> 
</book> 

Tôi muốn để có được những nút trang cụ thể bằng cách đi qua trang idchương id. Làm thế nào tôi có thể đạt được điều này ?

Ngoài ra, nút sách chứa quá nhiều chương và mỗi chương chứa nhiều trang. Vì vậy, tôi đang sử dụng trình phân tích cú pháp SAX để phân tích nội dung.

+0

Không hỗ trợ xpath trong SAX? : [SAX Parsers có thể sử dụng XPath trong Java không?] (Http://stackoverflow.com/questions/8791600/can-sax-parsers-use-xpath-in-java) – har07

+0

Tôi không tin rằng bạn có thể truy vấn bằng cách sử dụng xpath với SAX vì tài liệu không được lưu trữ đầy đủ trong bộ nhớ bất cứ lúc nào. Bạn có thể lưu trữ một danh sách các chương và các trang trong một số cấu trúc dữ liệu trong khi phân tích cú pháp. Bạn có thể gửi mã liên quan đến SAX của bạn không? –

+3

@ har07 Cảm ơn bạn đã cập nhật. Tôi sẽ sử dụng DOM Parser. Bạn có thể vui lòng cung cấp cho tôi giải pháp bằng cách sử dụng DOM không? – Krish

Trả lời

3

"Làm cách nào để tìm nạp các nút cụ thể từ XML bằng XPath trong Java?"

Tôi không phải là rất quen thuộc với Java và Android, nhưng xpath để có được cụ thể page từ mẫu XML của bạn, đi qua page idchapter id nên nhìn về như thế này:

//chapter[@id='chapter_id_here']/page[@id='page_id_here'] 

giải thích ngắn gọn:

  • //chapter: tìm chapter yếu tố bất cứ nơi nào trong XML ...
  • [@id='chapter_id_here']: ... nơi id giá trị thuộc tính tương đương với chương cụ thể id
  • /page: từ mỗi lọc chapter yếu tố, tìm phần tử con page ...
  • [@id='page_id_here']: ... nơi id giá trị thuộc tính tương đương với trang cụ thể id

Bạn có thể làm theo các đề thi để thực hiện biểu xpath trong Java: How to read XML using XPath in Java, và trong Android: Search in XML File with XPath in Android

+0

Tôi làm cách nào để chỉ định nhiều bộ lọc cho trang? Định dạng dưới đây có đúng không ?? // page [@ id = '2' && @ cid = '1' && bid = 'Book 1'] – Krish

+1

'&&' toán tử trong xpath là 'và':' // page [@ id = '2 'và @ cid =' 1 'và @ bid =' Book 1 '] ' – har07

Các vấn đề liên quan