JKL.ParseXML �N���X�́A�T�[�o��� XML �`���t�@�C�����_�E�����[�h�`��͂��āA
JavaScript �I�u�W�F�N�g�i�z���}�b�v�j�ɕϊ����郉�C�u�����ł��B
���G�� DOM ����Ȃ��ȒP�ȃX�N���v�g�� XML �`���t�@�C���������邽�߁A
Amazon �Ȃ� XML ���o�͂�������� Web �T�[�r�X��A
CGI �ƘA�g���邱�Ƃ� ajax �y�[�W����y�ɍ\�z�ł��܂��B
IE�EFirefox�EOpera�ESafari �̃N���X�u���E�U�ɑΉ����Ă��܂��B
XML �� JSON�̂悤�Ɏ�y�Ɉ����鑼�A
JSON�^CSV�^LoadVars �`���t�@�C���Ȃǂ̃e�L�X�g�t�@�C�������p�\�ł��B
����ŃA�[�J�C�u�F
jkl-parsexml-0.22.tar.gz
TAR.GZ
jkl-parsexml-0.22.zip
ZIP
�ŐV�Ń\�[�X�R�[�h�F
http://svn.coderepos.org/share/lang/javascript/jkl/
SVN
�� prototype.js �� Ajax �N���X���g�p���Ă���ꍇ�́A XML.ObjTree �N���X �̗��p�����������������B
�Ȃ��A���̃y�[�W�̃T���v���X�N���v�g�ł́A�f���̂��߂ɑ��� JKL �V���[�Y�̃��C�u�����p���Ă��܂����A ���ۂɂ͑��̃��C�u�����͕s�v�ŁAjkl-parsexml.js �͂���P�݂̂̂ŗ��p�ł��܂��B
�����ŗ��p���Ă����T���v��XML�F
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<items>
<item>
<jcity>���c��</jcity>
<jlocal>���c</jlocal>
<jpref>�����s</jpref>
<pref_cd>13</pref_cd>
<zip_cd>1000001</zip_cd>
</item>
</items>
�Ⴆ�A�s���{����(jpref)�̃A�N�Z�X���@�F
<script type="text/javascript" src="jkl-parsexml.js"></script>
<script><!--
var url = "zip.xml";
var http = new JKL.ParseXML( url );
var data = http.parse();
document.write( data["items"]["item"]["jpref"] ); // ["�`"] �ŘA�z�z��ɃA�N�Z�X
document.write( data.items.item.jpref ); // ���邢�� . ���ł�OK�y�ł��ȒP�z
// --></script>
XML �t�@�C����W�J�������ʂ� JavaScript �I�u�W�F�N�g�S�́F
{
items: {
item: {
jcity: "���c��",
jlocal: "���c",
jpref: "�����s",
pref_cd: "13",
zip_cd: "1000001"
}
}
}
�������[�h�`�����[�h�AGET���\�b�h�`POST���\�b�h���A
���p�ړI�ɉ����ăI�v�V�����Ő�ւ��邱�Ƃ��\�ł��B
�������[�h�ł́A�T�[�o�����HTTP���X�|���X��҂��Ă��猋�ʂ�Ԃ��܂��B
�����[�h�ł́A���X�|���X��҂����ɂ�������I�����A
HTTP���X�|���X���������_�Ŏw�肳�ꂽ�����Ăяo���܂��B
�������[�h�̕����v���O�����L�q�͊ȒP�ɂȂ�܂��A
������ ajax �̑��쐫�i�҂����ɉ�ʂ��X�V����Ă���UI�j�ɂ��ẮA
�����[�h�̕����D��Ă��܂��B
GET ���\�b�h�� POST ���\�b�h�ɂ��ẮAHTML �t�H�[���� method �����Ɠ����ł��B
�ÓI�ȁi�����ς́jXML �t�@�C������M����ꍇ�ɂ́AGET ���\�b�h�𗘗p���܂��B
CGI �� WEB �T�[�r�X���Ăяo���Č������ʂȂǓ��I�� XML ����M����ꍇ�ɂ́A
�K�X GET�EPOST ���\�b�h���g�������Ă��������B�i�T�[�o���̎d�l�Ɉ˂�j
�mDEMO�n�{�^���������ƁA�T���v���\�[�X�����ۂɎ��s���܂��B
�����Ƃ���y�Ȏg�����́A�������[�h(sync)��GET���\�b�h�ł��B DEMO
var url = "zip.xml";
var http = new JKL.ParseXML( url ); // JKL.ParseXML�I�u�W�F�N�g��
var data = http.parse(); // �_�E�����[�h�`��͂���
alert( "jpref: "+data.items.item.jpref ); //�i��j�s���{������\������
�������[�h�ł́A parse() ���\�b�h�̕Ԃ�l�� XML �t�@�C���̉�͌��ʂ� JavaScript �I�u�W�F�N�g�Ƃ��ĕԂ�܂��B
GET���\�b�h�łȂ�POST���\�b�h�𗘗p����ꍇ�́A
new JKL.ParseXML�R���X�g���N�^�̑�2������
�N�G����������w�肵�Ă��������B
�i��2�������ȗ��������� GET ���\�b�h�ƂȂ�d�g�݂ł��j
DEMO
var url = "http://www.kawa.net/works/ajax/zip/ajaxzip.cgi";
var query = "zip=1000001";
var http = new JKL.ParseXML( url, query ); // JKL.ParseXML�I�u�W�F�N�g��
var data = http.parse(); // �_�E�����[�h�`��͂���
alert( "jcity: "+data.items.item.jcity ); //�i��j�s��������\������
�������A
Opera �ł�
POST���\�b�h���g�p�ł��Ȃ��悤�ł��B
Opera �ɑΉ�����ꍇ�́AGET���\�b�h�𗘗p���Ă��������B
�i��Opera 8.5 �ȍ~�ł́APOST ���\�b�h�����Ȃ����p�ł��܂��j
�����[�h�ł́A
XML��͏����̊�����Ɏw�肵�������Ăяo����܂��B
DEMO
�T�[�o����� XML �t�@�C���̓�����҂����Ƀu���E�U�̕`��E���[�U���삪�ĊJ����̂ŁA
���X�|���X�̗ǂ��E���K�ȑ���������ł��܂��B
������ajax�ł��B�iasynchronous�j
parse ���s�O�� async ���\�b�h�ŃR�[���o�b�N����o�^���Ă��������B
���̃R�[���o�b�N���̑�P�����Ƃ���XML �t�@�C���̉�͌��ʂ��n����܂��B
var url = "zip.xml";
var http = new JKL.ParseXML( url ); // JKL.ParseXML�I�u�W�F�N�g��
var func = function ( data ) { // �Ăяo��������`����
alert( "jlocal: "+data.items.item.jlocal ); //�i��j�n����\������
}
http.async( func ); // �Ăяo��������w�肷��
http.parse(); // �_�E�����[�h�`��́`���Ăяo������
�܂��AJKL.ParseXML �̑�2�����ŃN�G����������w�肵���ꍇ�́A �������[�h�Ɠ��l�� POST���\�b�h�ɐ�ւ��܂��B
JKL.ParseXML �͒ʏ�AXML �̊K�w�\�������̂܂܃}�b�v�i�A�z�z��j�ɓW�J���܂����A �����q�v�f��������o�ꂷ��ꍇ�́A�f�t�H���g�ł� JavaScript ���ւ̏o�̓f�[�^�� �����I�ɔz����܂��B
�����ŗ��p���Ă����T���v��XML�F
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <children> <girl>�Ԏq</girl> <boy>���Y</boy> <boy>���Y</boy> </children>
�z��W�J���ꂽboy�́w���Y�x�ɃA�N�Z�X������@�F
<script type="text/javascript" src="jkl-parsexml.js"></script>
<script><!--
var url = "children.xml";
var http = new JKL.ParseXML( url );
var data = http.parse();
document.write( data["children"]["boy"][1] ); // ["�`"] �ŘA�z�z��A�N�Z�X����
document.write( data.children.boy[1] ); // ���邢�� . �ŕ��ׂĂ�OK
// --></script>
XML �t�@�C����W�J�������ʑS�̂̃f�[�^�\���F �iboy���z��W�J����Ă���j
{
children: {
girl: "�Ԏq",
boy: [ "���Y", "���Y" ]
}
}
setOutputArrayElements() ���\�b�h�𗘗p����ƁA�w�肵���v�f�́A�l���z��Ƃ��ēW�J����܂��B
����ȊO�̗v�f�́A�z��łȂ��ŏ��ɓo�ꂵ���v�f�̒l�̂ݓW�J����܂��B
�����̗v�f��z��W�J������ꍇ�́A�e�v�f����z��ɂ��Ďw�肵�܂��B
var http = new JKL.ParseXML( url ); http.setOutputArrayElements( "boy" ); //�wboy�x������z��W�J���� http.setOutputArrayElements( ["boy"] ); //�wboy�x������z��W�J���� http.setOutputArrayElements( ["boy", "girl"] ); //�wboy�x�Ɓwgirl�x��2�v�f�Ƃ��z��W�J���� http.setOutputArrayElements( [] ); // �ǂ̗v�f���z��W�J���Ȃ��i���o��D��j http.setOutputArrayElements( "*" ); //�wchildren�x�wboy�x�wgirl�x�S�Ĕz��W�J���� http.setOutputArrayElements( "boy", "girl" ); // ���B�z��Ŋ����Ă�������
setOutputArrayNever() ���\�b�h�𗘗p����ƁA�d�������čŏ��ɓo�ꂵ���v�f�̒l�̂ݓW�J����܂��B
���̗�ł́A�w���Y�x�������Ă��܂��܂����A�X�N���v�g�͊ȒP�ɂȂ�܂��B
{
children: {
girl: "�Ԏq",
boy: "���Y"
}
}
setOutputArrayAll() ���\�b�h�𗘗p����ƁA�S�Ă̗v�f���z��Ƃ��ēW�J����܂��B
�f�[�^�\���͏璷�ɂȂ�܂����A�f�[�^����������܂���B
{
children: [
{
girl: [ "�Ԏq" ],
boy: [ "���Y", "���Y" ]
}
]
}
�q�v�f�̓o�ꐔ�ɂ���Ď������ʂ��܂��B�i�f�t�H���g�j
XML �t�@�C���̓��e�ɂ���ăf�[�^�K�w�����ς���Ă��܂����߁A
JavaScript ���� typeof �ȂǂŊm�F���Ȃ��珈������K�v������܂��B
{
children: {
girl: "�Ԏq",
boy: [ "���Y", "���Y" ]
}
}
JKL.ParseXML �ɂ́A�f�t�H���g�� XML �`���t�@�C�������ȊO�ɂ��A
�e�L�X�g�t�@�C����A
JSON �`���t�@�C�����������邽�߂̃T�u�N���X���p�ӂ���Ă��܂��B
�����̃T�u�N���X�𗘗p���邱�ƂŁA
JKL.ParseXML ���w�N���X�u���E�U�Ή��� HTTP �ʐM���C�u�����x�Ƃ��ė��p�ł��܂��B
���e�T�u�N���X���ASafari �ł����p�ł���悤�ɂȂ�܂����I
IE6�EFirefox�EOpera 8.5�ESafari 2.0 �ʼnғ����܂��B
�C�ӂ̃e�L�X�g�t�@�C���̓��e�����̂܂ܕ�����Ƃ��Ď�M����T�u�N���X�ł��B DEMO
var url = "hello.txt";
var http = new JKL.ParseXML.Text( url );
var data = http.parse();
alert( "data: "+data ); //�wdata: Hello, World!!�x
�g�����́AJKL.ParseXML �N���X�{�̂Ɠ��l�ł��B
new() �R���X�g���N�^�ŁAURL �� POST �p�̃N�G���ϐ����w��ł��܂��B
parse() ���\�b�h�̕Ԃ�l�Ƃ��āA�e�L�X�g�t�@�C���̒��g�����̂܂ܕ�����Ƃ��ē���܂��B
���������Ƃ��Ă� XMLHttpRequest �� responseText �v���p�e�B�𗘗p���Ă��邾���ŁA
�p�[�X�����Ȃǂ͓��ɉ������Ă��܂��A���\�b�h���̓���̂��� parse() �ƂȂ��Ă��܂��B
�e�L�X�g�t�@�C���̕����R�[�h�� UTF-8 �������p���������B�iSafari 2.0�Ή��j
JSON �T�u�N���X�́A�T�[�o���� JSON �`���t�@�C�������ۂɕ֗��ł��B DEMO
��������A�g������ JKL.ParseXML �N���X�{�̂Ɠ����ł��B
parse() ���\�b�h�̕Ԃ�l�Ƃ��āAJSON �`���t�@�C���̓��e���̂܂܂�
JavaScript �I�u�W�F�N�g�����o���܂��B
var url = "zip-utf8.json";
var http = new JKL.ParseXML.JSON( url );
var data = http.parse();
alert( "jlocal: "+data.items.item.jlocal ); //�wjlocal: ���c�x
�Ȃ��A���������Ƃ��Ă� eval �ɂ�� JSON �f�[�^��W�J���Ă��܂��̂ŁA �T�[�o��� JSON �f�[�^�͐M���ł�����e�ɂ��Ă����K�v������܂��B �i�C�ӂ� JavaScript �R�[�h�����s�ł��Ă��܂����߁j
�wajax�x�Ƃ͖{���A������ XML ���p�����Ƃ��Ƃ̌`�Ԃ̃n�Y�ł����A �w�L�`�� ajax�x�Ƃ��ẮA�����EJSON ���p���܂܂��ƍl�����Ă��܂��B
CSV �t�@�C���̓��e��2�����z��Ƃ��Ď�荞�݂܂��B DEMO
var url = "zip-utf8.csv";
var http = new JKL.ParseXML.CSV( url );
var data = http.parse();
alert( "data[1][6]: "+data[1][6] );
�Ⴆ�A43�s15��Ȃ�CSV�t�@�C���̏ꍇ�A
����̃Z���̒l�� data[0][0]�A
�E���̃Z���̒l�� data[42][14] �Ƃ��Ď��o���܂��B
��̃T���v���� [1][6] �ł�����A2�s�ڂ�7��ڂ����o���Ă��܂��B
�⑫�����F
�e�Z���� "�`" �ň͂܂�Ă��Ă��\���܂���B�i�Z������ , ���g���ꍇ�Ȃǁj
�Z������ " ������ꍇ�́A�w"�x1�����ɂ��w""�x�ƋL�ڂ��܂��B�iExcel���̎d�l�j
HTML �y�[�W���̕����R�[�h�͌��肳��܂���B
(HTML���̂́AUTF-8�ł�Shift_JIS�ł�OK)
CSVmap �T�u�N���X�ł́A CSV �t�@�C����1�s�ڂ��^�C�g���s�Ƃ��āA 2�s�ڈȍ~���}�b�v���i�A�z�z�j���܂��B DEMO
var url = "zip-utf8.csv";
var http = new JKL.ParseXML.CSVmap( url );
var data = http.parse();
alert( "data[0].pref: "+data[0].pref );
���f�[�^1�s�ځi=CSV�t�@�C����2�s�ځj�� data[0] �̃}�b�v�i�A�z�z��j�ɓ���܂��B
�Ⴆ�A1��ڂ̃J�������� jis�A15��ڂ̃J�������� flag6 �ł�����A
���f�[�^1�s�ڂ̃Z���̒l�� data[0].jis �܂��� data[0]["jis"]�A
�E���̃Z���̒l�� data[41].flag6 �܂��� data[41]["flag6"] �Ƃ��Ď��o���܂��B
�G�N�Z�����ō쐬���� CSV �t�@�C���́AUTF-8 �R�[�h�łȂ��� Shift_JIS �R�[�h�ɂȂ��Ă��܂��B
�e�T�u�N���X�ŗ��p�ł���̂͊�{�I�� UTF-8 ��p�ƂȂ�܂��̂ŁA
Shift_JIS �R�[�h�� CSV �t�@�C���𗘗p����ꍇ��
����������h�����߂ɁA�T�[�o��� .htaccess �Ɉȉ��̐ݒ肪�K�v�ɂȂ�܂��B
CSV �t�@�C���Ɠ����f�B���N�g���i�܂��͏�ʊK�w�j�� .htaccess �ɉ��L�̓��e��ݒ肵�Ă��������B
AddType text/plain;charset=Shift_JIS .csv
��L�� .htaccess ��ݒu���邱�Ƃɂ��A IE6�EFirefox�EOpera 8.5 �Ƃ� Shift_JIS �� CSV �t�@�C�������p�ł���悤�ɂȂ�܂��B
�������ASafari 2.0 �����́A�e�L�X�g�t�@�C���̕����R�[�h�̕ϊ����s��Ȃ����߁A
�����������������܂��B
Safari 2.0 �ɂ��Ή������� ajax �A�v���̏ꍇ�́A
UTF-8 �̃e�L�X�g�t�@�C�����AXML �t�@�C���������p���������B
�Ȃ��ACSV �t�@�C���{���� MIME �^�C�v�� text/comma-separated-values �ł��B �������A����� Opera �ŕ����R�[�h�ϊ��Ɏ��s���ĕ�����������ꍇ�����邽�߁A text/plain �Ƃ��邱�Ƃ��I�X�X�����܂��B
# Opera �ŕ����R�[�h���ʂɎ��s�����i���p�ł����j AddType text/comma-separated-values;charset=Shift_JIS .csv
ActionScript�� LoadVars�N���X�� loadVariables�� �� ���p����� application/x-www-form-urlencoded �`���̃e�L�X�g�t�@�C���̓��e��A�z�z��Ƃ��Ď�荞�݂܂��B DEMO
var url = "zip-utf8.vars";
var http = new JKL.ParseXML.LoadVars( url );
var data = http.parse();
alert( "data.jlocal: "+data.jlocal );
application/x-www-form-urlencoded �`���Ƃ́ACGI �� GET ���M�ɂ����� ? �ȉ��̌`���Ɠ����ł��B �ȉ��̂悤�ɁA�L�[�ƒl�� = �ŋ�������̂��A& �ŕ��ׂ܂��B
zip_cd=1000001&pref_cd=13&jpref=�����s&jcity=���c��&jlocal=���c
�w=�x�̕������̂́w%3D�x�A�w&�x�́w%26�x�ƃG�X�P�[�v���Ă����K�v������܂��B �����R�[�h�� UTF-8 �ł��B
�wJKL.ParseXML.LoadVars�x�Ƃ����������炵���Ӗ��s���ȃT�u�N���X���ɂȂ��Ă��܂����A �v�́AFLASH �p�ɍ\�z���ꂽ CGI �Ȃǂ��A ���̂܂� JavaScript ���痬�p�ł���̂��|�C���g�ł��B
�傫��XML�t�@�C����ǂݍ��ޏꍇ�ȂǁA
XML�t�@�C���̑S�̂���x�� JavaScript �I�u�W�F�N�g�ɕϊ�������
���O�� DOM ������s���ď����������ꍇ������܂��B
���̏ꍇ�ɂ́ADOM �T�u�N���X�������p���������B
DEMO
var url = "zip.xml";
var http = new JKL.ParseXML.DOM( url );
var dom = http.parse();
alert( "nodeName: "+dom.nodeName ); //�wnodeName: items�x
��������A�g������ JKL.ParseXML �N���X�{�̂Ɠ����ł��B
parse() ���\�b�h�̕Ԃ�l�Ƃ��āAXML �t�@�C���� JavaScript �I�u�W�F�N�g�W�J�������ʂł͂Ȃ��A
XML �t�@�C���� documentElement ���̂���(DOM)�����o���܂��B
0.12�ȑO�̑S�Ẵo�[�W������JKL.ParseXML�ɂ́A
TEXT_NODE �̏����Ƀo�O������܂����Bthanks to KT
���݂̃o�[�W�����ł͏C�����Ă���܂��̂ŁA
�X�V�����肢�������܂��B
�������A���炩�̎���ō���� 0.10 �ȑO�̋��o�[�W�����𗘗p�����������ꍇ�́A jkl-parsexml.js �\�[�X�̉��L��1�s�����������Ă��������B
�C���O
if ( elem.nodeType == 3 || elem.nodeType == 4 ) {
var bool = elem.nodeValue.match( /[^\u0000-\u0040]/ );
if ( bool == null ) return; // ignore white spaces
�C����
if ( elem.nodeType == 3 || elem.nodeType == 4 ) {
var bool = elem.nodeValue.match( /[^\x00-\x20]/ );
if ( bool == null ) return; // ignore white spaces
Safari �ł� [^\u0000-\u0020] �łȂ� [^\x00-\x20] �Ə����K�v�������ł��ˁB
����̓o�[�W���� 0.14 �őΉ����܂����B���K�\���� Unicode �\�L���ł��Ȃ��̂��H
JKL.ParseXML �̓t���[�E�F�A�ł��B�i�C�� BSD ���C�Z���X�j
���p�E�p���킸�A�����p���������܂��B
�\�[�X�R�[�h�̉��ς��\���܂��A
�\�[�X���� Copyright �s�ɂ��Ă͍폜�ł��܂���B
�Ȃ��A�����p�ɍۂ��āA�K���������O�Ƀ��[�����ł��A�����������K�v�͂���܂���B
�����̏��p�T�C�g�E�C���g���T�C�g�E�l�T�C�g�Ȃǂł����p���������Ă���܂��B