重複の可能性:
各親ノードから個別に子ノードを取得するにはどうすればよいですか?
私はいくつかの XML データを持っています。この XML に基づいて特定のコンポーネントを作成したいと思います。私の XML データは以下のとおりです。
<main>
<TabNavigator x="27" y="11" width="455" height="376" id="gh" backgroundColor="#A4B6E9"> <NavigatorContent width="100%" height="100%" label="Client" id="clientTab">
<Label x="10" y="30" width="52" height="25" text="Name:"/>
<Label x="10" y="127" width="52" height="28" text="Addres"/>
<TextInput id="name_client" x="69" y="18" width="188" height="37" restrict="[A-Z a-z]"/>
<TextArea id="address_client" x="70" y="70" height="126"/>
<Label x="10" y="230" width="84" height="32" text="Phone:"/>
<TextInput id="phone_client" x="70" y="218" width="188" height="30" restrict="0-9" maxChars="10"/>
<Button x="100" y="291" height="28" label="Submit" click="submitClick()"/>
<Label id="errorClient" x="59" y="270" width="171" height="27" text="please fill the blank fields" color="red" visible="false"/>
</NavigatorContent><NavigatorContent width="100%" height="100%" label="Admin" id="adminTab">
<Label x="23" y="48" width="52" height="25" text="Name:"/>
<Label x="26" y="148" width="52" height="28" text="Addres"/><TextInput id="name_admin" x="105" y="33" width="188" height="37"/>
<TextArea id="address_admin" x="105" y="93" height="126"/>
<Label x="26" y="257" width="84" height="32" text="Phone:"/>
<TextInput id="phone_admin" x="104" y="246" width="188" height="30" restrict="0-9" maxChars="10"/>
<Button x="137" y="305" height="28" label="Submit"/>
<Label id="errorAdmin" x="100" y="286" width="171" height="17" color="red" fontSize="14" text="please fill the blank fields" visible="false"/>
<Button x="335" y="60" height="34" label="Admin Details"/>
<Button x="335" y="180" height="34" label="Client Details"/>
</NavigatorContent>
</TabNavigator>
<TitleWindow x="521" y="84" width="377" height="234">
<DataGrid x="0" y="0" width="375" height="163" borderVisible="true" id="details">
<columns>
<ArrayList>
<GridColumn dataField="Name" id="arrayName"/>
<GridColumn dataField="Address" headerText="Address"/>
<GridColumn dataField="Phone_Number" headerText="Phone_Number"/></ArrayList></columns>
</DataGrid><Button x="139" y="167" height="28" label="Export"/>
</TitleWindow>
</main>
上記の XML から子ノードを見つけるために、次のコードを使用しています。
private function loadXML(targetURL:String):void
{
urlLdr.load(new URLRequest(targetURL));
urlLdr.addEventListener(Event.COMPLETE,urlLdr_complete);
}
private function urlLdr_complete(event:Event):void
{
var xmlData:XML=new XML(URLLoader(event.currentTarget).data);
for each (var t:XML in xmlData.children())
{
Alet.show(t.Name());
}
}}
しかし、2 つの子ノード (TabNavigator と NavigatorContent) しかありません。すべての子ノードを取得するにはどうすればよいですか? 誰でも私を助けてもらえますか???
私のコードを以下に示します。今は子ノードしかありません..親ノードを持っていません.親ノードと子ノードを取得するのを手伝ってください..
<fx:Script>
<![CDATA[
import flashx.textLayout.elements.BreakElement;
import flashx.textLayout.formats.BackgroundColor;
import mx.charts.chartClasses.DataDescription;
import mx.collections.ArrayCollection;
import mx.collections.XMLListCollection;
import mx.containers.Canvas;
import mx.containers.TabNavigator;
import mx.controls.Alert;
import mx.controls.Button;
import mx.controls.Label;
import mx.controls.Text;
private var urlLdr:URLLoader=new URLLoader;
private var childName:String;
private var i:int=0;
private var arrayCollection:ArrayCollection=new ArrayCollection;
private function loadXML(targetURL:String):void
{
urlLdr.load(new URLRequest(targetURL));
urlLdr.addEventListener(Event.COMPLETE,urlLdr_complete);
}
private function urlLdr_complete(event:Event):void
{
var xmlData:XML=new XML(URLLoader(event.currentTarget).data);
handleOneNode(xmlData);
}
private function handleOneNode(node:XML,parent:XML=null):void
{
var children:XMLList=node.children();
if(children.length()==0)
{i++;
childName=node.name();
switch(childName.toString())
{
case "Button":
{
var myButton:Button=new Button();
myButton.x=node..@x;
myButton.y=node..@y;
myButton.height=node..@height;
myButton.width=node..@width;
myButton.label=node..@label;
myCanvas.addChild(myButton);
break;
}
case "TabNavigator":
{
var myTabNavigator:TabNavigator=new TabNavigator();
myTabNavigator.x=node..@x;
myTabNavigator.y=node..@x;
myTabNavigator.height=node..@height;
myTabNavigator.id=node..@id;
myTabNavigator.width=node..@width;
break;
}
case "Datechooser":
{
break;
}
case "Label":
{
var myLabel:Label=new Label();
myLabel.x=node..@x;
myLabel.y=node..@x;
myLabel.height=node..@height;
myLabel.id=node..@id;
myLabel.width=node..@width;
myLabel.text=node..@text;
myCanvas.addChild(myLabel);
}
case "TextInput":
var myText:Text=new Text;
myLabel.x=node..@x;
myLabel.y=node..@x;
myLabel.height=node..@height;
myLabel.id=node..@id;
myLabel.width=node..@width;
myLabel.text=node..@text;
myCanvas.addChild(myLabel);
case "TitleWindow":
{
}
default:
{
}
}
}
else
{
for each(var child:XML in children)
{
handleOneNode(child,node);
}
}
}
]]>
</fx:Script>