簡體   English   中英

XML / Javascript:根據節點層次結構為xml樹分配順序號

[英]XML / Javascript : assigning sequential numbers to an xml tree based on node hierarchy

我想知道是否有人知道如何做到這一點:我有一個像這樣的XML樹-我按應出現的順序添加了數字,但這必須是動態的:

<scene id="1>
  <scene id="2>
    <scene id="3"/>
  </scene>
  <scene id="4>
<scene id="5>
<scene id="6>

那里有3個父級場景,並且三個父級中的每一個都有任意數量的子級和子級。 將為這三個場景中的每個場景分配其自己的子畫面圖像,以供每個場景使用一個圖標,並且其所有子級都將使用其父子畫面,但是我需要找出一個系統來根據該子畫面分配適當的背景位置在樹上的位置。 所以我需要說的是:

每個根精靈都位於水平0px處。 第一個孩子位於(1 * 80px)。 第二個孩子是2 * 80px。 第一個子子項等於最后一個子項所在的子項,再加上80px。

因此,本質上我需要按此順序為每個節點分配邏輯編號。 我將如何進行數學計算? 我正在使用javascript(jquery)解析XML。

感謝您提出的任何想法。

假設您使用的是jQuery 1.5+,並且您有一個格式 正確的有效XML文檔 (即帶有根元素),則可以執行以下操作:

var nextId = 1;
var xmlStr = '<movie>' +
             '  <scene>' + // id1
             '    <scene>' + // id2
             '      <scene/>' + // id3
             '    </scene>' +
             '    <scene/>' + // id4
             '  </scene>' +
             '  <scene/>' + // id5
             '</movie>';
var doc = $(xmlStr);
$(doc).find('scene').each(function(i, el) {
  el.id = ("id" + nextId++);
});

請注意,有效的“ id”屬性不能以數字開頭,因此不能使用新值“ id1”等。結果doc中的每個“場景”元素都應具有遞增的“ id”值。

doc;
// <movie>​
//   <scene id=​"id1">​
//     <scene id=​"id2">​
//       <scene id=​"id3">​</scene>​
//     </scene>​
//     <scene id=​"id4">​</scene>​
//   </scene>​
//   <scene id=​"id5">​</scene>​
// </movie>​

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM