1

そのため、スクリプトの1つでgraphMLインポート方法を切り替えていますが、インポートしたデータのクリーンアップに問題があります。現在、graphMLデータは次のようになっています。

<node id="1">
  <data key="url">www.someURL.com</data> 
  <data key="label">Guy, This</data> 
  <data key="profile_url">/dir/uri=http...</data> 
  <data key="number_of_authored_works">x</data> 
  <data key="earliest_publication">y</data> 
  <data key="num_earliest_publication">z</data> 
  <data key="latest_publication">a</data> 
  <data key="num_latest_publication">b</data> 
  <data key="num_unknown_publication">c</data> 

現状の私のコードは次のとおりです。

function loadXML() {
$.ajax({
    type: "GET",
    url: "Scripts/coauthor4.xml",
    dataType: "xml",
    success: xmlParser
})}

var someVar= [];
function xmlParser(xml) {

$(xml).find('edge').each(function (i) {
    someVar[i] = $(this).find('data').siblings().text();
})}

コンソールに移動してノード(someVar [i])を要求すると、次のようになります。

www.someURL.comGuy, This/dir/uri=http...xyzabc

だから私は少なくとも必要なデータをすべて持っています...良いです。しかし、各データポイントからkey:valueのペアを作成したいと思います。したがって、基本的に、someVar[i][0]は次のようになります。

someVar[i][0]
  url: 'www.someURL.com'
4

1 に答える 1

1

私が何かを逃していない限り、あなたはただそこに別のループを投げる必要があります。各「データ」ノードを反復処理します。

$(xml).find('edge').each(function (i) {
    $(this).find('data').each(function(j) {
        var key = $(this).attr('key');
        someVar[i] = someVar[i] || {};
        someVar[i][key] = $(this).text();
    });
});

someVar[0]は次のようになります:

{
    url: 'www.someURL.com',
    label: 'Guy, This'
    ...
}
于 2012-08-21T18:17:09.750 に答える