Skip to content

Instantly share code, notes, and snippets.

@miyukki
Created January 28, 2012 14:53
Show Gist options
  • Save miyukki/1694604 to your computer and use it in GitHub Desktop.
Save miyukki/1694604 to your computer and use it in GitHub Desktop.
ezXMLParser is simple xml parser.
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