2012-01-06 41 views
5

tôi có một số mã xml và tôi muốn phân tích cú pháp này thành đối tượng java, hãy giúp tôi.Cách phân tích cú pháp XML thành đối tượng java bằng cách sử dụng XStream

<Error> 
    <number>1020</number> 
    <Type>fatal</Type> 
    <Text>Nagaraju</Text> 
    <Text>Suresh</Text> 
    <Text>Sound</Text> 
    <Text>Rajesh</Text> 
    </Error> 

đối tượng java là

Class Error{ 
     int number; 
     String type; 
     List<String>texts=new ArrayList<String>(); 
    } 
+0

Tôi nghĩ XStream là lúc tốt nhất của nó khi bạn xác định một đối tượng đầu tiên và sau đó cho phép XML để làm theo dọc theo. –

Trả lời

5

tôi sẽ lập bản đồ nó bằng tay cá nhân, hoặc sử dụng JAX-B có lẽ, nhưng nếu bạn thực sự muốn sử dụng xStream:

  1. Bạn sẽ cần để ánh xạ lớp Lỗi tới phần tử Lỗi. Bạn có thể làm điều này với một "bí danh". http://x-stream.github.io/alias-tutorial.html
  2. Danh sách thường không được biểu diễn theo cách đó, thông thường nó sẽ được lồng vào nhau. Nối tiếp đối tượng Lỗi của bạn với XML để xem nó sẽ được biểu diễn như thế nào. Nếu bạn muốn thực hiện theo cách này, bạn có thể cần một người chuyển đổi: http://x-stream.github.io/converter-tutorial.html
  3. Bạn cũng có thể sử dụng các bộ sưu tập ngầm định bằng cách đăng ký phần tử Lỗi và văn bản. http://x-stream.github.io/javadoc/com/thoughtworks/xstream/XStream.html#addImplicitCollection(java.lang.Class, java.lang.String, java.lang.Class)
+0

Tôi nghĩ rằng bạn có thể sử dụng các bộ sưu tập ngầm thay vì bộ chuyển đổi – BeRecursive

+0

có cách nào để phân tích cú pháp xml khác mà trình chuyển đổi đó không? –

+0

Làm cách nào để sử dụng các bộ sưu tập tiềm ẩn đó? –

-1

sử dụng mã:

String response = "<\patron_tenders><\patron_tender name=\"alpha\" city=\"mumbai\" >" 
+ "<\partial_card_number>************6319<\partial_card_number>" 
+ "<\zip_code>123456<\zip_code>" 
+ "<\tender_type_name>Visa<\tender_type_name>" 
+ "<\token_id>80195<\token_id>" + "<\expired>false<\expired>" 
+ "<\patron_tender>"+"<\patron_tender name=\"beta\" city=\"pune\" >" 
+ "<\partial_card_number>************3545<\partial_card_number>" 
+ "<\zip_code>565768<\zip_code>" 
+ "<\tender_type_name>Visa2<\tender_type_name>" 
+ "<\token_id>83397<\token_id>" + "<\expired>true<\expired>" 
+ "<\patron_tender><\patron_tenders>"; 
+0

Thường có một số tương quan giữa câu hỏi và câu trả lời, nhưng đối với câu trả lời này: không quá nhiều. –

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