Created
January 28, 2012 14:53
-
-
Save miyukki/1694604 to your computer and use it in GitHub Desktop.
ezXMLParser is simple xml parser.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var ezXMLParser = {}; | |
ezXMLParser.splitXML = function(XMLstr) { | |
var ret = new Array(); | |
for(var count = 0; ezXMLParser.isExistStrictXML(XMLstr); count++){ | |
// | |
var xml_end_char_index = XMLstr.indexOf('>'); | |
var xml_start_char_index = XMLstr.indexOf('<'); | |
// 閉じタグが不正に入っていた場合 | |
if(xml_end_char_index != -1 && xml_start_char_index != -1 && xml_end_char_index < xml_start_char_index) { | |
XMLstr = XMLstr.substr(xml_start_char_index); | |
} | |
var xml_start_char_index = XMLstr.indexOf('<'); | |
//始まりのタグが0にない,絶対ないと思われ1 | |
if(xml_start_char_index != 0){ | |
console.log('a'); | |
return ret; | |
} | |
var xml_end_char_index = XMLstr.indexOf('>'); | |
var xml_end_before_char = XMLstr.substr(xml_end_char_index - 1 , 1); | |
// 一行XML | |
if(xml_end_before_char == '/') { | |
ret[count] = XMLstr.substr(xml_start_char_index, xml_end_char_index + 1); | |
XMLstr = XMLstr.substr(xml_end_char_index + 1); | |
}else{ | |
// 一行じゃないとき | |
var xml_element_end_char_index = XMLstr.indexOf('>', xml_end_char_index + 1); | |
ret[count] = XMLstr.substr(xml_start_char_index, xml_element_end_char_index + 1); | |
XMLstr = XMLstr.substr(xml_element_end_char_index + 1); | |
} | |
} | |
ret[count] = XMLstr; | |
return ret; | |
}; | |
ezXMLParser.isExistStrictXML = function(XMLstr) { | |
var xml_nocontent_end_char_index = XMLstr.indexOf('/>'); | |
if(xml_nocontent_end_char_index != -1) return true; | |
var xml_end_char_index = XMLstr.indexOf('>'); | |
var xml_end_char_index2 = XMLstr.indexOf('>', xml_end_char_index + 1); | |
if(xml_end_char_index2 != -1) return true; | |
return false; | |
}; | |
ezXMLParser.splitElement = function(chatXML) { | |
chatXML = '<xml>' + chatXML + '</xml>'; | |
var ret = new Object(); | |
var parser = new DOMParser(); | |
var dom = parser.parseFromString(chatXML, "text/xml"); | |
var chats = dom.getElementsByTagName('xml')[0].childNodes[0]; | |
for(var i = 0; i < chats.attributes.length; i++) { | |
ret[chats.attributes[i].name] = chats.attributes[i].textContent; | |
} | |
ret['localName'] = chats.localName; | |
ret['textContent'] = chats.textContent; | |
return ret; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment