2013-12-15 14 views
7

gruplar için öznitelikleri: Ben her iki değeri toplamak ve SubItemField elemanları niteliklerini nasıl bilmiyorumGolang: Her iki XML öğesi değerini ayrıştırma ve böyle bir XML yapıya sahip

<RootLevel status="new" timestamp="1383259529" xmlns="http://someplace.com"> 
    <Item active="1" status="new" itemid="451254"> 
     <SubItem active="1" recent="false" usertext="No idea" id="78421"> 
      <SubItemField active="1" ready="no" type="1">1.4</SubItemField> 
      <SubItemField active="1" ready="yes" type="2">4.5</SubItemField> 
     </SubItem> 
    </Item> 
</RootLevel> 

, benim kodudur gibi bir şey:

type RootLEvel struct { 
    XMLName xml.Name `xml:"RootLevel"` 
    ... 
    Item []Item 
} 

type Item struct { 
    ... 
    SubItem []SubItem 
} 

type SubItem struct { 
    ... 
    SubItemField []SubItemField 
} 

type SubItemField struct { 
    Active bool `xml:"active,attr"` 
    Ready string `xml:"ready,attr"` 
} 

Ben nitelikleri ve değerler ama biliyorum değerleri almak için tek yol de sadece kullanmak ihtiyacımız olan

SubItemField []float32 
Özel türüm yerine

. Xml.Unmarshal btw kullanıyorum.

Herhangi bir fikrin var mı?

Teşekkürler. O birileri hiçbir belge ya da cos yardımcı olabilir umut

type SubItemField struct { 
    Value float32 `xml:",chardata"` 
    Active bool `xml:"active,attr"` 
    Ready string `xml:"ready,attr"` 
} 

:

cevap

17

ben sadece gibi xml:",chardata" yüzden görünüyor maç benim yapı içinde yeni bir özellik eklemek zorunda, nasıl yaptığını kendim anladım bununla ilgili örnekler.

+0

Kodlama/xml: '- etiketli bir alan", chardata ", XML öğesi olarak değil, karakter verileri olarak yazılır. ' –

+0

Şaşkınlığı önlemek ve @SamWhited adlı kullanıcının yorumunu netleştirmek için ...", chardata "xml öğesinin iç karakter verisini ifade eder, dolayısıyla xml'ye yazılırken veriler sadece karakter olarak öğeye yazılır ve xml'den okunurken basit karakterler olarak okunur. Veriler, bu türlere zorlanabilirken, yazılan veya okunan veri türü önemli değildir. –

+0

Teşekkürler, geçmişe bakıldığında kafa karıştırıcıydı. Sadece "dökümantasyon yok" ifadesinin yanlış bir ifade olduğuna işaret etmeye çalıştım, kodlama/xml paketinde belgelendi. –