javascript - XML/JavaScript : assigning sequential numbers to an xml tree based on node hierarchy

标签 javascript jquery xml

我想知道是否有人知道如何做到这一点:我有一个像这样的 XML 树 - 我已经按照它们应该出现的顺序添加了数字,但这需要是动态的:

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

其中有 3 个父场景,三个父场景中的每个场景都有任意数量的子场景和子场景。三个场景中的每一个都将分配自己的 Sprite 图像,用于代表每个场景的图标,其所有子级都将使用其父 Sprite ,但我需要找出一个系统来为 Sprite 分配适当的背景位置关于它在树中的位置。所以我需要做的是说:

每个根 Sprite 都在 0px 水平位置。第一个 child 位于 (1*80px)。第二个 child 在 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”值(value)。

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

关于javascript - XML/JavaScript : assigning sequential numbers to an xml tree based on node hierarchy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7114529/

相关文章:

javascript - 如何将 React prop 从父级传递给子级,再传递给另一个子级?

javascript - 无法从 JSON 获取数据

javascript - 为什么我的 localStorage.setItem 似乎没有做任何事情?

javascript - 无法读取未定义的属性 'sendKeys'

javascript - 将输入字段绑定(bind)到字典

jquery - 每个单选按钮的自定义背景图像

Javascript 去除 URL 上的点

python - 如何使用基于 XML 的 GUI 布局生成 python GUI?

python - 通过python爬取sitemap.xml

php - PHP xmlwriter 文档中的换行符