2015-09-21 8 views
6

यहाँ XML संरचना है सम्मान नहीं करता है:एक्सएमएल unmarshal मूल तत्व नामस्थान उपसर्ग परिभाषा

<root> 
    <sub xmlns="http://test.com/testns"> 
     <title>this is title</title> 
    </sub> 
</root> 

रूट नेमस्पेस उपसर्ग परिभाषा मार्शल और उप eleme के बाद हटा दी जाती है एनटी उपसर्ग के बजाय यूआरएल नेमस्पेस का उपयोग कर रहा है। यहां code

क्या कोई तरीका है कि मार्शल/unmarshal xml संरचना को नहीं बदलेगा? धन्यवाद!

+1

ऐसा लगता है कि xml नेमस्पेस अभी ठीक से काम नहीं करता है https://github.com/golang/go/issues/9519 https://github.com/golang/go/issues/11841 – RoninDev

+2

यदि ऐसा है तो यह एक है उत्तर और संभवतः एक उत्तर में बनाया गया है ताकि इसे स्वीकार किया जा सके। – ijt

उत्तर

0

ऐसा लगता है कि यह तार्किक संरचना बदल गया है। आपके मूल इनपुट में, root तत्व नामस्थान http://test.com/testns के लिए उपसर्ग test घोषित करता है लेकिन यह वास्तव में उस नामस्थान में स्वयं को घोषित नहीं करता है। https://play.golang.org/p/NqNyIyMB4IP

मैं Root struct अप करने के लिए नाम स्थान टकरा और इनपुट में root एक्सएमएल तत्व को test: उपसर्ग कहा:

यहाँ एक वैकल्पिक संस्करण है कि यह क्या लगता है कि आप चाहते हैं।

+0

हालांकि मुझे यकीन नहीं है कि यह 'शीर्षक' तत्व को सही तरीके से संभाला जा रहा है। जब नामस्थान को 'xmlns: test' के साथ घोषित किया जाता है और' शीर्षक 'तत्व नाम में उपसर्ग नहीं होता है, तो मुझे विश्वास नहीं है कि यह नामस्थान में होना चाहिए। हालांकि, कच्चे 'xmlns' घोषणा के साथ संसाधित संस्करण में, सभी बच्चे स्वचालित रूप से नामस्थान में हैं ... जैसा कि @RoninDev ने उल्लेख किया है, stdlib xml पुस्तकालय नामस्थानों के साथ इतना महान नहीं हैं। –

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