flex xml children()方法的奇怪行为

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"

我有以下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" 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"/>