Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AS3:如何获取具有特殊属性的所有XML节点?(与苏奇一起)_Xml_Flash_Actionscript 3 - Fatal编程技术网

AS3:如何获取具有特殊属性的所有XML节点?(与苏奇一起)

AS3:如何获取具有特殊属性的所有XML节点?(与苏奇一起),xml,flash,actionscript-3,Xml,Flash,Actionscript 3,挑战: 我想收集属性为“id”的所有节点 问题: 该代码不适用于嵌套节点 <?xml version="1.0" encoding="utf-8"?> <contentmap> <fonts id="fonts"> <font id="Arial" name="RicolaArial">fonts/Arial.swf</font> </fonts> <plugin id="library_main"

挑战:

我想收集属性为“id”的所有节点

问题:

该代码不适用于嵌套节点

<?xml version="1.0" encoding="utf-8"?>
<contentmap>
  <fonts id="fonts">
    <font id="Arial" name="RicolaArial">fonts/Arial.swf</font>
  </fonts>
  <plugin id="library_main" name="theName">swf/library_main.swf</plugin>
</contentmap>
试着用..*代替*
我不确定,但您可以查看operators文档进行检查:

只需使用_xml..@id即可

private function onXMLLoader(event : Event) : void {
  _xml = _loader.getXML(event.target.url.url);

  var searchTerms : XMLList = _xml.*.(hasOwnProperty('@id'));

  if (searchTerms.length() > 0 ) {
    _NodeArray = new Array();
    _parseNode(searchTerms);
  }
}

private function _parseNode(xml : XMLList) : void {
  for each (var node: XML in xml) {
    if(!node.hasSimpleContent()) {
      _parseNode(node.children());
    } else {
      var nodeObject : Object = new Object();
      nodeObject['value'] = node.text();

      for each(var a:XML in node.@*) {
        var name : String = String(a.name());
        nodeObject[name] = a.toXMLString();
      }
      _NodeArray.push(nodeObject);
    }
  }
}