2013-03-28 33 views
5

Tôi đang phát triển một ứng dụng Android để lấy thông tin từ một trang Wikia và hiển thị nó trong ứng dụng. Tôi hiện đang kéo tất cả các hạng mục để điều hướng và ứng dụng của tôi được thiết lập để hiển thị trang trong một WebView nhưng tôi muốn chỉ cần kéo thông tin và định dạng bản thân thay vì giảm giá nó bằng cách chuyển đến WebView.Sử dụng MediaWiki để kéo văn bản từ trang Wikia nhưng nó trở lại trong một mớ hỗn độn lớn là có cách nào tốt hơn tôi có thể làm điều này để kéo văn bản từ mỗi phần?

Những gì tôi đang sử dụng để có được những văn bản là: http://scottlandminecraft.wikia.com/api.php?format=xml&action=query&titles=ZackScott&prop=revisions&rvprop=content

Vấn đề của tôi là nội dung trở lại trong một cụm lớn, không ai có bất kỳ ý tưởng như thế nào để có được điều này được định dạng hơn vì vậy tôi có thể phân tích từ thẻ hay tôi đang cố gắng tìm ra điều đó? Nếu vậy nó sẽ là tốt hơn để tìm một cách để phân tích cú pháp văn bản tôi cần bằng cách đi từ định danh trong văn bản này kéo, hoặc là có một cách tốt hơn?

Cảm ơn bạn đã nhập và thời gian.

+1

Tôi không thấy những gì bạn gọi là "lùm lớn". Đó là một tài liệu XML có chứa wikitext của trang - chỉ là những gì mà lệnh api của bạn yêu cầu. Bạn đang theo dõi dữ liệu nào, HTML được hiển thị? – Bergi

+0

"Khối lớn" tôi đã đề cập đến là khối lượng văn bản mà tôi kéo khi tôi làm điều này, Nó nhận được tất cả các văn bản mà tôi muốn từ trang nhưng nó không được tổ chức, tôi chỉ không chắc chắn nếu có một cách tốt hơn để kéo văn bản giúp phân tích cú pháp XML dễ dàng hơn hoặc nếu tôi nên đi với định dạng khác và sau đó phân tích cú pháp đó, như những người khác đã đăng ở đây đã cho tôi các tùy chọn tuyệt vời để phân tích cú pháp từ HTML. – kikurself

+0

Bạn có muốn cây phân tích cú pháp không? Bạn có muốn các wikitext đồng bằng, không được bao bọc trong xml? – Bergi

Trả lời

11

Cách dễ nhất, nếu bạn không muốn phân tích cú pháp đánh dấu wiki, hãy truy xuất phiên bản HTML đã phân tích cú pháp của trang và xử lý nó bằng trình phân tích cú pháp HTML (như jsoup, theo đề xuất của Hasham).

Bên cạnh đó chỉ cạo giao diện người dùng bình thường wiki (mà sẽ cung cấp cho bạn các trang HTML được bọc trong da navigation), có hai cách để nhận được văn bản HTML của một trang MediaWiki:

  1. sử dụng API với action=parse, mà sẽ trả lại trang HTML được bọc trong một XML API MediaWiki (hoặc JSON/YAML/vv) đáp lại, như thế này:

  2. hoặc sử dụng index.php kịch bản chính với action=render, mà sẽ trở lại chỉ HTML page:

Ps. Vì bạn đề cập đến các phần trong câu hỏi của mình, hãy để tôi lưu ý rằng mô-đun API action=parse có thể trả về thông tin về các phần trên trang bằng cách sử dụng prop=sections (hoặc thậm chí prop=sections|text).Đối với một ví dụ, xem truy vấn API này:

+0

Giải pháp của bạn tốt hơn tôi. –

1

Nếu bạn muốn phân tích các tài liệu html sau đó Jsoup là sự lựa chọn.

+0

Không có tài liệu HTML tại http://scottlandminecraft.wikia.com/api.php?format=xml&action=query&titles=ZackScott&prop=revisions&rvprop=content – Bergi

+0

Xml của nó, bạn có thể phân tích cú pháp đó với JSOUP. – Hasham

+0

Không. Đối với XML, bạn * không * sử dụng trình phân tích cú pháp HTML. – Bergi