これを行う関数を作成しました。XMLのようなテキストをJavaScriptオブジェクトに構文解析する方法
var text="adsf [name]Victor[/name] dummytext [name]Elliot[/name] asdf [name]Jake[/name] asdf [foo]bar[/foo]";
alert(readTags(text,'name')); //Victor,Elliot,Jake
alert(readTags(text,'foo')); //bar
が、今、私はこの
[person]
[name]jake[/name]
[age]12[/age]
[/person]
のような文字列を受け取る機能を実装し、この
var object={};
object['person']={};
object['name']='jake';
object['age']='12';
return(object);
のようなオブジェクトを返したいが、私はどのようにループするのか分かりませんテキストを通して。開始タグと終了タグの処理方法
[tag] [tag]value[/tag] [/tag]
ように私は
indexOf('[tag]')
と
lastindexOf('[/tag]')
を使用して、右から左と終了タグの開始タグを見つけると考えられますが、これは以前のある
[tag]value[/tag] [tag]value[/tag]
このような状況では動作しません。機能
function readTags(str,property){
var beginTag='['+property+']';
var endTag='[/'+property+']';
var values=new Array(0);
while(str.indexOf(beginTag)!=-1){
values[values.length]=strBetween(str,beginTag,endTag);
str=str.substring(str.indexOf(endTag)+endTag.length);
}
return(values);
}
function strBetween(string,strBegin,strEnd){ //StrBetween("abcdef","b","e") //return "cd"
var posBegin, posEnd;
posBegin=string.indexOf(strBegin);
string=string.substring(posBegin + strBegin.length);
posEnd=string.indexOf(strEnd);
string=string.substring(0,posEnd);
if ((posBegin==-1)||(posEnd==-1)){
return(null);
}else{
return(string);
}
}
これを行わないでください。代わりに[JSON](http://json.org/)を使用してください。 – PointedEars
JSONを使用してみませんか? – wannik
@PointedEars私はブログを使用してこのようなロボットがつかむことのできるコンテンツをホストしています。ほとんどすべてがJSONにゴミ箱を追加するか、XMLまたは<>タグを使用できません –