2015-03-02 18 views
5

đang cố gắng để tải một tập tin XML chứa một chuỗi vô biên của các yếu tố hỗn hợp (một sự lựa chọn trong một chuỗi trong XSD) Các tập tin trông như thế:Làm thế nào để ánh xạ chuỗi xml của các phần tử hỗn hợp với cấu trúc go?

<RootNode> 
    <ElementB>...</ElementB> 
    <ElementA>...</ElementA> 
    <ElementA>...</ElementA> 
    <ElementC>...</ElementC> 
    <ElementB>...</ElementB> 
    <ElementA>...</ElementA> 
    <ElementB>...</ElementB> 
</RootNode> 

tôi sử dụng để khởi tạo và xml.Unmarshal điền vào các cấu trúc sau:

type RootNode struct { 
    ElementA []ElementA 
    ElementB []ElementB 
    ElementC []ElementC 
} 

type ElementA struct { 
} 

type ElementB struct { 
} 

type ElementC struct { 
} 

Tôi làm việc ở đây http://play.golang.org/p/ajIReJS35F. Vấn đề là tôi cần phải biết chỉ số của các phần tử trong chuỗi gốc. Và với mô tả đó, thông tin này sẽ bị mất.

Có cách nào để tải các phần tử thuộc loại ElementA, ElementB hoặc ElementC trong cùng một mảng không? Nói chung, cách tốt nhất để lập bản đồ một danh sách các yếu tố hỗn hợp cho một cấu trúc đi là gì?

Trả lời

4

Bạn có thể sử dụng xml:",any" thẻ trên nút gốc của bạn và sau đó unmarshal phần còn lại vào cấu trúc đó có một trường XMLName như thế này:

type RootNode struct { 
    Elements []Element `xml:",any"` 
} 

type Element struct { 
    XMLName xml.Name 
} 

Thông tin thêm về xml:",any"XMLNamehere.

Ví dụ về sân chơi: http://play.golang.org/p/Vl9YI8GG1E

+0

Bí quyết tuyệt vời! Cảm ơn! –

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