flex xml children()方法的奇怪行为
我有以下xml声明:flex xml children()方法的奇怪行为,xml,apache-flex,Xml,Apache Flex,我有以下xml声明: public var reqData:XML = <root> <Requirement ID="REQ-GEN-0.1" title="exigence gen 1" description="blabla 01" testable="true"/> <RequirementSet ID="GUI REQ"> <Requirement ID="REQ-GUI-1.1" title="exigence ihm 1"
public var reqData:XML = <root>
<Requirement ID="REQ-GEN-0.1" title="exigence gen 1" description="blabla 01" testable="true"/>
<RequirementSet ID="GUI REQ">
<Requirement ID="REQ-GUI-1.1" title="exigence ihm 1" description="blabla 11" testable="true"/>
<Requirement ID="REQ-GUI-1.2" title="exigence ihm 2" description="blabla 12" testable="false"/>
</RequirementSet>
<RequirementSet ID="PERF REQ">
<Requirement ID="REQ-PERF-2.1" title="exigence perf 1" description="blabla 21" testable="true"/>
<Requirement ID="REQ-PERF-2.2" title="exigence perf 2" description="blabla 22" testable="false"/>
<Requirement ID="REQ-PERF-2.3" title="exigence perf 3" description="blabla 23" testable="true"/>
<Requirement ID="REQ-PERF-2.4" title="exigence perf 4" description="blabla 24" testable="false"/>
<Requirement ID="REQ-PERF-2.5" title="exigence perf 5" description="blabla 25" testable="false"/>
<Requirement ID="REQ-PERF-2.6" title="exigence perf 6" description="blabla 26" testable="false"/>
</RequirementSet>
<RequirementSet ID="BUS REQ">
<RequirementSet ID="BUS 1 REQ">
<Requirement ID="REQ-BUS-3.1.1" title="exigence bus 1" description="blabla 311" testable="false"/>
<Requirement ID="REQ-BUS-3.1.2" title="exigence bus 2" description="blabla 312" testable="true"/>
</RequirementSet>
<RequirementSet ID="BUS 2 REQ">
<Requirement ID="REQ-BUS-3.2.1" title="exigence bus3" description="blabla 321" testable="true"/>
</RequirementSet>
<RequirementSet ID="BUS 3 REQ"/>
</RequirementSet>
</root>;
这是我完全不理解的结果(控制台):
node:<RequirementSet ID="BUS 2 REQ">
<Requirement ID="REQ-BUS-3.2.1" title="exigence bus3" description="blabla 321" testable="true"/>
</RequirementSet>
node.children:
xmlNode.name:RequirementSet
xmlNode.localName:RequirementSet
xmlNode.attributes:BUS 2 REQ
xmlNode.attributes:element
xmlNode.children():
xmlNode.children().length():1
xmlNodeFirstChild:
xmlNodeFirstChild.name():Requirement
xmlNodeFirstChild.comments():
xmlNodeFirstChild.attributes():REQ-BUS-3.2.1exigence bus3blabla 321true
xmlNodeFirstChild.nodeKind():element
xmlNodeFirstChild.descendants():
节点:
node.children:
名称:RequirementSet
localName:RequirementSet
属性:总线2请求
属性:元素
xmlNode.children():
xmlNode.children().length():1
xmlNodeFirstChild:
xmlNodeFirstChild.name():要求
xmlNodeFirstChild.comments():
xmlNodeFirstChild.attributes():REQ-BUS-3.2.1exigence总线3BLA 321true
xmlNodeFirstChild.nodeKind():元素
xmlNodeFirstChild.subjects():
children()方法未检测到该节点,但它存在。问题是我无法查看XML.abc的源代码,因为它不是开源的。有人能告诉我发生了什么事吗?是bug还是其他原因?该节点由
children()
方法按照您的预期方式拾取,因为否则children()
的长度()
将为0。您必须了解的是跟踪(node.children())
实际上意味着跟踪(XMLList(node.children()).toString())代码>-您正在对XMLList调用toString(),其输出可能有许多不同的结果,尽管这些结果显然不是很可预测的:
var xml : XML = <node><child>MyText</child></node>;
trace ( xml.children () );
// => MyText
xml = <node><child value="MyText" /></node>;
trace ( xml.children () );
// => nothing
xml = <node><child key="myKey" id="1" value="MyText" /></node>;
trace ( xml.children () );
// => nothing
xml = <node><child id="1" key="text">MyText</child></node>;
trace ( xml.children () );
// => MyText
xml = <node><child id="1">MyText<child id="2">MyOtherText</child></child></node>;
trace ( xml.children () );
// => <child id="1">MyText<child id="2">MyOtherText</child></child>
var-xml:xml=MyText;
trace(xml.children());
//=>MyText
xml=;
trace(xml.children());
//=>没有
xml=;
trace(xml.children());
//=>没有
xml=MyText;
trace(xml.children());
//=>MyText
xml=mytextmothertext;
trace(xml.children());
//=>MyTextMyOtherText
要确保获得子节点的完整xml,请尝试:
var childXML : String = node.children().length() > 0 ? node.children()[0].toXMLString():"empty");
trace("node.child#0:"+ childXML);
// output:
// node.child#0:<Requirement ID="REQ-BUS-3.2.1" title="exigence bus3" description="blabla 321" testable="true"/>
var childXML:String=node.children().length()>0?node.children()[0].toXMLString():“空”);
跟踪(“node.child#0:+childXML);
//输出:
//节点。子节点#0:
var childXML : String = node.children().length() > 0 ? node.children()[0].toXMLString():"empty");
trace("node.child#0:"+ childXML);
// output:
// node.child#0:<Requirement ID="REQ-BUS-3.2.1" title="exigence bus3" description="blabla 321" testable="true"/>