2017-02-13 21 views
0

xmlデータを解析するjQuery再帰関数がありますが、子要素の子を選択しようとしています。基本的には要素内の要素です。たとえばxmlの<to>タグを選択したいので、インデントして展開の折りたたみボタンを追加することができます。jQuery再帰関数の選択子

XML

<?xml version="1.0" encoding="UTF-8"?> 
<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body>Don't forget me this weekend!</body> 
</note> 

jQueryの

function traverse(tree) { 
      $(tree).contents().each(function (i, child) { 
        if (child.nodeType == 3) { // text node 

         $("#xml-reader").append(
          '<span>' + child.nodeValue + '</span>' 
         ); 

         // this is my attempt 
         if (child.children) { // element node 
          $("#xml-reader").append(
           '<br><i>' + child.nodeName + ": " + '</i>' 
          ); 
         } 
        } else { 
         if (child.nodeType === 8) { // comment node 

          $("#xml-reader").append(
           '<i>' + child.nodeValue + '</i>' 
          ); 
         } 
         else { 
          $("#xml-reader").append(
           '<br><b>' + child.nodeName + ": " + '<b>' 
          ); 
          traverse(child); 
         } 
        } 
       } 
      ); 
     } 

     traverse($(xml).find('*')); 
+1

'child.children'のそれは機能する必要があります:' child.children () 'を返します。 childがノードを含むオブジェクトであれば、 'child.to'でアクセスすることができます。例を設定したり、 '.each()'の中に 'tree'や' child'の内容を指定できることを確認するには? – empiric

+0

@empiric私は関数全体を書き換えました。私は今、任意のXMLファイルを解析し、ブラウザでファイルを拡張可能なツリーとして出力する再帰的な関数を持っています。 – theWhiteFox

答えて

0

私はSO JavaScript Recursion to format lists from XML to HTML 一つの大きな変更は

に声明

if(node.childNodes[index].tagName == 'name') { 

場合は、これを変更した答えにこれを使用して、私のトラバース機能を書き直し3210

if (node.nodeType === Node.TEXT_NODE)

私は任意のxmlファイルを読み込むことができますこの方法であなたはノードの子にアクセスしたい場合にかかわらず、tagNameを