2013-12-15 5 views
7

मैं इस तरह एक XML संरचना है के लिए जिम्मेदार बताते हैं:Golang: दोनों XML तत्व मूल्य पार्स और समूहों

<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> 

मैं नहीं जानता कि मैं कैसे दोनों मूल्यों इकट्ठा होते हैं और SubItemField तत्वों के लिए जिम्मेदार बताते हैं कर सकते हैं, मेरे कोड है कुछ की तरह:

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"` 
} 

मैं दोनों गुण और मूल्यों लेकिन एक ही तरीका है कि मूल्यों को मैं जानता हूँ कि प्राप्त करने के लिए की जरूरत है तो बस का उपयोग

SubItemField []float32 
मेरे कस्टम प्रकार के बजाय

। मैं xml.Unmarshal btw का उपयोग कर रहा हूँ।

कोई विचार?

धन्यवाद।

उत्तर

17

मैं अपने आप को लगा कि ऐसा करने के लिए, मैं बस मेरी struct में एक नया संपत्ति से मेल खाने वाले xml:",chardata" तो ऐसा लगता है कि जोड़ने के लिए किया था:

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

मुझे आशा है कि मदद कर सकता है किसी क्योंकि कोई प्रलेखन है या इसके बारे में उदाहरण।

+0

एन्कोडिंग/एक्सएमएल के लिए गॉडॉक्स से: '- टैग वाला एक फ़ील्ड", chardata "वर्ण डेटा के रूप में लिखा गया है, एक्सएमएल तत्व के रूप में नहीं। –

+0

भ्रम से बचने और @SamWhited की टिप्पणी को स्पष्ट करने के लिए ...", chardata "बस xml तत्व के आंतरिक वर्ण डेटा को संदर्भित करता है, इसलिए जब XML को लिखना डेटा को तत्व के रूप में लिखा जाता है, और जब xml से पढ़ा जाता है तो यह वर्णों के रूप में सरल पढ़ा जाता है। डेटा प्रकार से लिखा या पढ़ा जा रहा है इससे कोई फर्क नहीं पड़ता क्योंकि डेटा उस प्रकार में घुमाया जा सकता है। –

+0

धन्यवाद, पूर्वदर्शी में जो उलझन में था। मैं बस यह इंगित करने की कोशिश कर रहा था कि "कोई दस्तावेज नहीं है" गलत कथन था, इसे एन्कोडिंग/एक्सएमएल पैकेज में दस्तावेज किया गया है। –

संबंधित मुद्दे