1

この投稿のサンプル XML のすべての属性 (名前に関係なく) を繰り返し処理し、JQuery を使用して 2D の「配列の配列」を作成する必要があります。

Microsoft の CAML クエリ言語を使用して、SharePoint リストから属性を返しています。オブジェクトに読み込まれる XML として返されます。返される XML は次のとおりです。

<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetListItemsResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/"><GetListItemsResult><listitems xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
                <rs:data ItemCount="3">
                    <z:row ows_Attachments="0" ows_LinkTitle="Apple" ows_Color="Red" ows_Quantity="3.00000000000000" ows_Quantity2="5.00000000000000" ows_MetaInfo="1;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="Apple" ows_ID="1" ows_UniqueId="1;#{FEDE3004-A0F4-421F-A76B-5BD51003B11C}" ows_owshiddenversion="2" ows_FSObjType="1;#0" ows_Created_x0020_Date="1;#2012-08-01 19:24:08" ows_Created="2012-08-01 19:24:08" ows_FileLeafRef="1;#1_.000" ows_PermMask="0x7fffffffffffffff" ows_Modified="2012-08-05 13:59:06" ows_FileRef="1;#Sandbox/bitest/Lists/Produce/1_.000"/>
                    <z:row ows_Attachments="0" ows_LinkTitle="Orange" ows_Color="Orange" ows_Quantity="5.00000000000000" ows_Quantity2="3.00000000000000" ows_MetaInfo="2;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="Orange" ows_ID="2" ows_UniqueId="2;#{1E40887F-87BF-4029-93A3-A1096DF1D1A7}" ows_owshiddenversion="2" ows_FSObjType="2;#0" ows_Created_x0020_Date="2;#2012-08-01 19:24:42" ows_Created="2012-08-01 19:24:42" ows_FileLeafRef="2;#2_.000" ows_PermMask="0x7fffffffffffffff" ows_Modified="2012-08-05 13:59:08" ows_FileRef="2;#Sandbox/bitest/Lists/Produce/2_.000"/>
                    <z:row ows_Attachments="0" ows_LinkTitle="Corn" ows_Color="Yellow" ows_Quantity="9.00000000000000" ows_Quantity2="19.0000000000000" ows_MetaInfo="3;#" ows__ModerationStatus="0" ows__Level="1" ows_Title="Corn" ows_ID="3" ows_UniqueId="3;#{3873272A-61AA-49C0-B5D2-A228388ADE27}" ows_owshiddenversion="5" ows_FSObjType="3;#0" ows_Created_x0020_Date="3;#2012-08-01 19:24:57" ows_Created="2012-08-01 19:24:57" ows_FileLeafRef="3;#3_.000" ows_PermMask="0x7fffffffffffffff" ows_Modified="2012-08-08 13:58:38" ows_FileRef="3;#Sandbox/bitest/Lists/Produce/3_.000"/>
                </rs:data>
            </listitems></GetListItemsResult></GetListItemsResponse></soap:Body></soap:Envelope>

この xml は「不適切な形式」のように見えるため、2D 配列で使用するために属性を反復処理するのに問題があります。StackOverflow に関する別の投稿があり、希望が持てました。XML の形式が整っていないため、機能していないようです。

これらの属性すべてを配列の配列 (子ノードごとに 1 つの配列)にロードできるようにする、このデータを処理するためのより良い方法があれば、ぜひ聞いてみたいと思います。私はこれにかなり慣れており、将来的にさまざまな CAML クエリで機能するシンプルなものを見つけたいと考えています。

-------------------------------------- 編集・新着情報--------------------- -----------------------

新しい質問を投稿する前に、この質問に情報を追加させてください。

リストされたすべての属性から動的に 2D 配列を作成することをややあきらめました。私自身と別の人はそれを機能させることができませんでした。毎回カスタム配列を作成する必要があるようです。

私の新しい関連する質問: この SOAP エンベロープからすべての "Quantity2" エントリを取得したいとしましょう。

JavaScript / JQueryを使用して各行エントリを反復処理し、各行に1つの値を返す最良の方法は何ですか? 現在使用しているコード サンプルを提供できます。動作しますが、XML のデータ値によって混乱するのではないかと心配しています。

$(xData.responseXML).find("z\\:row").each(function() {
    quantityOneArray[i] = parseFloat($(this).attr("ows_Quantity"));
    quantityTwoArray[i] = parseFloat($(this).attr("ows_Quantity2"));
    i++
});

この例のような DOM 要素を使用することをお勧めします (これは有効ではありません)。

for each $(this).childnode(function(){

どんな考えでも大歓迎です!

4

1 に答える 1

0

あなたが何を求めているのかよくわかりませんが、次のようなことを試してください:

//get the parent XML node
var elems = document.getElementsByTagName('soap:Envelope')​;

//turn the collection into an aray
var arrayElem = $(elems).toArray();

//create an array with each node
var arr = [];
$.each($('*', elems), function(i,e) {
    arr.push(e);
});

フィドル

于 2012-08-14T18:38:10.383 に答える