craigslist...@g mail.com wrote:
I want to convert a string such as:
Cities
New York
Address 1
Address 2
Address 3
Household
John
Lucy
Los Angeles
Address 1
Address 2
Address 3
Household
Mike
Ryan
...and automatically convert this string to XML so I can
traverse through it with any XML methods that may exist.
// data init
var D = "Cities\n"
D+="\tNew York\n"
D+="\t\tAddres s 1\n"
D+="\t\tAddres s 2\n"
D+="\t\tAddres s 3\n"
D+="\t\t\tHouse hold\n"
D+="\t\t\t\tJoh n\n"
D+="\t\t\t\tLuc y\n"
D+="\tLos Angeles\n"
D+="\t\tAddres s 1\n"
D+="\t\tAddres s 2\n"
D+="\t\tAddres s 3\n"
D+="\t\t\tHouse hold\n"
D+="\t\t\t\tMik e\n"
D+="\t\t\t\tRya n\n"
// valid xml knows 5 character entities only
D=D.replace(/</g, '<')
D=D.replace(/>/g, '>')
D=D.replace(/"/g, '"')
D=D.replace(/'/g, ''')
D=D.replace(/&/g, '&')
// regexes based on tabs
D=D.replace(/(\t{4})(.{0,})\ n/g,' <name>$2</name>\n')
D=D.replace(/(\t{3})(.{0,})\ n/g,' <household>$2 </household>\n')
D=D.replace(/(\t{2})(.{0,})\ n/g,' <address>$2</address>\n')
D=D.replace(/(\t)(.{0,})\n/g, ' <city>$2</city>\n')
// add root tag and xml header line
var lines = D.split('\n')
var root = lines[0]
delete lines[0]
D='<'+root+'>' + lines.join('\n' ) + '</'+root+'>'
D='<?xml version="1.0" encoding="UTF-8"?>\n' + D
// report to screen
document.write( '<textarea rows="20" cols="70">'+D+' </textarea>')
Hope this helps,
--
Bart