2016-01-11 12 views
5

私はXMLを使い慣れていて、プロジェクト用にテストしています(JSONは使用できません。既存のXMLを使用する必要があります)。jQuery同じ構造のAJAX XML

私の問題は、表示されているのとまったく同じ構造でXMLからデータを追加したいということです。

<?xml version="1.0" encoding="UTF-8" ?> 
<?xml-stylesheet type="text/xsl" href="../xsl/html.xsl" ?> 
<htmldoc> 
    <heading> 
     Odyssey Heading HTML Test in XML. 
    </heading> 
    <para> 
     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
     tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
     quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 
     consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 
     cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 
     proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
    </para> 
    <data>GBF79759</data> 
    <para> 
     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
     tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
     quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 
     consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 
     cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 
     proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
    </para> 
</htmldoc> 

これは私が分離されているマークアップのミックス(<para>'s & <data>を持っているので、私は一例として、これを使用し、いくつかのXMLマークアップの簡単な例(既存のXMLは、はるかに複雑であるが)、あるここに一例です)。

私はオンラインで探していましたが、誰もがデータを動的ではなく、要素を選んで追加していました。私がしたいのは、XML文書のすべてのタグがHTML要素として記述されていることですすべてを付け加える。私はこれがXSLがカバーするものなのか疑問に思いますか?私はXML/XSLに多くの知識を持っていないので、どんな助けでも大歓迎です。ここで

は私の現在のテストJS(非動的な方法)の一例である:

$.ajax({ 
    url: 'xml/' + data + '.xml', 
    type: 'GET', 
    dataType: 'xml' 
}).done(function(xml) { 
    console.log("success"); 
    $(xml).find('htmldoc').each(function() { 
     var heading = $(this).find('heading').text(), 
      para = $(this).find('para').text(); 

     $('#main > .content-wrapper > .container').append(
      // XML Structure 
      $('<h3>' + heading + '</h3>'), $('<p>' + para + '</p>') 
     ); 
    }); 
}).fail(function(jqXHR, textStatus, errorThrown) { 
    console.log("error", jqXHR, textStatus, errorThrown); 
}).always(function() { 
    console.log("complete"); 
}); 
+1

あなたが直接 '内部からすべてのXMLを追加することを意味しますか 'あなたのページへのリンク –

+0

こんにちは、確かにそれは私が望むものです。文字通り、その特定の部分を摘み取るのではなく、そのまま正確な構造を追加することです。 –

+1

XSLTはこれでうまくいくでしょう。それぞれの入力要素タイプのテンプレートを作成して、対応するHTML結果要素を作成します。http://xsltransform.net/6r5Gh3xを参照してください。簡単な例として、それ以上のテンプレートを追加することができ、 ' 'を使って再帰的な処理を確実に行う必要があります。 –

答えて

0
$($.parseXML(xml)).find('htmldoc').each(function() { 
    var heading = $(this).find('heading').text(), 
     para = $(this).find('para').text(); 

    $('#main > .content-wrapper > .container').append(
     // XML Structure 
     $('<h3>'+heading+'</h3>'), $('<p>'+para+'</p>') 
    ); 
}); 

Fiddle

+1

申し訳ありませんが、これが現在のバージョンとどのように異なるのかを要約できますか?あなたのフィドルでは、同じ構造ではXMLのすべてではなく指定されたコンテンツが追加されますが、 'cherry picked'ではありません。 –

関連する問題