Javascript AngularJS获取XML子节点

Javascript AngularJS获取XML子节点,javascript,xml,angularjs,Javascript,Xml,Angularjs,我尝试使用AngularJS解析XML,为此,我在这里使用: 这对于使用以下格式的XML非常有用: <parent> <child id="1" name="something" attribute="something-else"/> </parent> <parent> <child> <grandchild1>Lorem</grandchild1> <grandchild2&

我尝试使用AngularJS解析XML,为此,我在这里使用:

这对于使用以下格式的XML非常有用:

<parent>
  <child id="1" name="something" attribute="something-else"/>
</parent>
<parent>
  <child>
    <grandchild1>Lorem</grandchild1>
    <grandchild2>Ipsum</grandchild2>
    <grandchild3>Dolor</grandchild3>
  </child>

  <child>
    <grandchild1>Lorem</grandchild1>
    <grandchild2>Ipsum</grandchild2>
    <grandchild3>Dolor</grandchild3>
  </child>
</parent>

但是,我尝试解析的XML采用以下格式:

<parent>
  <child id="1" name="something" attribute="something-else"/>
</parent>
<parent>
  <child>
    <grandchild1>Lorem</grandchild1>
    <grandchild2>Ipsum</grandchild2>
    <grandchild3>Dolor</grandchild3>
  </child>

  <child>
    <grandchild1>Lorem</grandchild1>
    <grandchild2>Ipsum</grandchild2>
    <grandchild3>Dolor</grandchild3>
  </child>
</parent>

洛勒姆
乱数假文
多洛
洛勒姆
乱数假文
多洛
我的问题是,如何循环每个子节点以获得其各自的孙子节点的属性


谢谢。

使用迭代器函数:

function iterator(node)
  {
  var foo = node.nodeValue;
  return foo;
  }
function parser(node);
  {
  /* Transform childNodes into an array of values */
  var bar = Array.prototype.map.call(node.childNodes, iterator);
  return bar;
  }
function xmlQuery(doc, node)
 {
 /* Aggregate matching nodes */
 var baz = doc.getElementsByTagName(node);
 return Array.prototype.map.call(baz, parser);
 }
连同解析器函数:

function iterator(node)
  {
  var foo = node.nodeValue;
  return foo;
  }
function parser(node);
  {
  /* Transform childNodes into an array of values */
  var bar = Array.prototype.map.call(node.childNodes, iterator);
  return bar;
  }
function xmlQuery(doc, node)
 {
 /* Aggregate matching nodes */
 var baz = doc.getElementsByTagName(node);
 return Array.prototype.map.call(baz, parser);
 }
连同查询功能:

function iterator(node)
  {
  var foo = node.nodeValue;
  return foo;
  }
function parser(node);
  {
  /* Transform childNodes into an array of values */
  var bar = Array.prototype.map.call(node.childNodes, iterator);
  return bar;
  }
function xmlQuery(doc, node)
 {
 /* Aggregate matching nodes */
 var baz = doc.getElementsByTagName(node);
 return Array.prototype.map.call(baz, parser);
 }
和DOMParser:

function readXML(xmlfromajax)
 {
 /* get XML response as text */
 var xmlString = xmlfromajax;
 /* Parse XML and query */
 with (new DOMParser)
  {
  var xmlDOM = parseFromString(xmlString, "text/xml");
  console.log(xmlDOM.documentElement.nodeName);
  return xmlQuery(xmlDOM, "child");
  }
 }
参考资料