以下のような文字列がある場合、それを使用して XML 内のノードを参照できますか?また、どのようにすればよいですか?
var loc:String = "myXML.section.header";
以下のような文字列がある場合、それを使用して XML 内のノードを参照できますか?また、どのようにすればよいですか?
var loc:String = "myXML.section.header";
あなたが求めていることはおそらく不可能ですが、他の質問に合わせて文字列を少し変更します
myXML が XML を格納する AS3 変数であると仮定します。
var sec:String = 'section'; var head:String = 'header';
myXML[秒][頭]
各「。」で文字列を分割できます。そして、部分文字列ごとに、それに等しい localName を持つすべてのノードを見つけることができます。
要するに、たとえば E4X 構文を使用すると、次のような関数を作成できます。
function getXMLList(xml:XML, search:String):XMLList {
var filters:Array = search.split("."); // break your string appart
// search for all node matching the first name using .() function on XML
var xl:XMLList = xml.(localName()==filters[0]);
// loop over the previous result if there is something found
for (var i:int=1, l:int=filters.length;i<l && (xl.length() > 0);i++) {
xl = xl.children().(localName()==filters[i]);
}
return xl;
}
それを使用して:
var xl:XMLList = getXMLList(myXML, 'root.nodeA.nodeB');
ここでは、wonderfl で動作する実際の例を示します: http://wonderfl.net/c/sed9