所以我在我的一个脚本中切换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
所以我至少拥有所有必要的数据......很好。但我想从每个数据点中创建关键:值对。基本上,someVar [i] [0]应该是这样的:
someVar[i][0]
url: 'www.someURL.com'
答案 0 :(得分: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'
...
}