DimBil,
I give you the solution: https://www.vbforums.com/showthread....=1#post5549786
You don't understand the Replace() function. Ok that isn't bad. Lets explain:
For my demo for you, I have to include the xml (in UTF16LE encoding) in one string. But inside xml there are some quotes (character code 34), the string delimiters for VB6. So I replace them with this "'" and for the demo I restore these " using a replace function. Is that clear?
If you don't understand that, there is nothing else I can do, but to abandon you. Is that clear?

An xml object is a pack of smaller xml object's. In a string format we say that is in serialized mode or type (pick either). But to walk through the xml object, you can do it the Baka's way, using string manipulation, or a ready made object which load the string and keep inside a tree of objects, each one is like the top one.
For each tree there is a number of nodes. Each node has something, maybe just text, or another xml object, means another tree. For each node there are some attributes. So with xml node you can search by tag (the name of the node) and maybe you have to reject some of them based on attributes. For your example there are attributes in Country tag, like xmlns:xsi.

My solution was very simple. Extract all city tags as separate xml objects in a collection (Vb6 collection, read about this). So for each "city" i read the text for specific tag (in the city).

If you want to get every city as xml serialized as string, you can.
But I suspect you have another problem, even you learn how to get "information", you have to realize how these can organized as records to process them as a batch in your program. Use arrays, use UDT, think about, depends of the process you want to apply to that data.

GK from Greece