Yeah, I was using regexp at one point. It's less code but it just isn't 
right to parse XML with it. Not when the xml.Decoder exposes such a nice 
API.

On Friday, January 6, 2017 at 12:55:37 PM UTC+1, Egon wrote:
>
>
>
> On Friday, 6 January 2017 13:28:22 UTC+2, John Leidegren wrote:
>>
>> So after talking a look at the xml package again I noticed the 
>> UnmarshalXML trap. So I used that. Here's the solution I went with.
>>
>> I wrapped the decoder in a recursive decent parser to make the actual 
>> UnmarshalXML method readable.
>>
>> https://play.golang.org/p/dylYB0KsyL
>>
>> It uses an example from the OpenGL registry where you can see that 
>> parameters use mixed content. They annotate the base type "ptype" and 
>> "name" but the rest is left as text (or so called chardata).
>>
>
> You can also use the "lazy-mans-version" 
> https://play.golang.org/p/WkR86QrEyK. (Of course only designed to work on 
> this exact data)
>
> + Egon
>
>
>> John
>>
>> On Friday, January 6, 2017 at 11:01:12 AM UTC+1, Egon wrote:
>>>
>>> You can use xml.Decoder (https://play.golang.org/p/fkp-t4_vee).
>>>
>>> Can you show in which place OpenGL registry contains such entries? Just 
>>> interested in why it is encoded that way.
>>>
>>> Also take a look at https://github.com/go-gl/glow
>>>
>>> + Egon
>>>
>>> On Friday, 6 January 2017 11:28:42 UTC+2, John Leidegren wrote:
>>>>
>>>> OK, then I give up. If that is how it works.
>>>>
>>>> The source XML file I'm reading is from the OpenGL registry and I 
>>>> cannot change the way they structured that file. What baffles me is that I 
>>>> can't seem to simply concat the text nodes either.
>>>>
>>>> I'd like to, as an option, just read the the concatenated text nodes 
>>>> from a sub tree as chardata but it appears as if it just ignores 
>>>> descendants.
>>>>
>>>> I'll fallback to innerxml and parse that manually, which is a little 
>>>> painful to have to do but doable.
>>>>
>>>> John 
>>>>
>>>> On Thursday, January 5, 2017 at 9:38:17 PM UTC+1, Shawn Milochik wrote:
>>>>>
>>>>> On Thu, Jan 5, 2017 at 2:40 PM, John Leidegren <john.le...@gmail.com> 
>>>>> wrote:
>>>>>
>>>>>> See https://play.golang.org/p/XjKdm7Pooh
>>>>>>
>>>>>> I was hoping to get back a, b followed by c but I get a, c then b. I 
>>>>>> just can't get this to work.
>>>>>>
>>>>>> How is it even possible for it to read character data from before and 
>>>>>> after the B node?
>>>>>>
>>>>>>
>>>>> The problem is that there is no C. A gets the characters from the <el> 
>>>>> element, and B gets the b from the <B> element:
>>>>>
>>>>> https://play.golang.org/p/czAXksSYMo
>>>>>
>>>>> I don't think you can get what you want from the XML unmarshal if 'a' 
>>>>> and 'c' are going to be chardata in the same element. You may just have 
>>>>> to 
>>>>> put them in separate elements or parse the 'A' value to get the two 
>>>>> separate strings.
>>>>>
>>>>>
>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to