迭代具有不同数量节点的xml文件

时间:2016-08-26 11:22:40

标签: ruby xml

我的程序的行为会有所不同,具体取决于是否有一个或多个节点。

RBucket<AnyObject> bucket = redisson.getBucket("anyObject");
// set an object
bucket.set(new AnyObject());
// get an object
AnyObject myObject = bucket.get();

单节点示例

body["Folder"].count

预期输出:1,实际:2 它似乎在文件夹内的节点上执行计数。

多节点示例

<Document>
  <Folder>
    <name></name>
    <placemark></placemark>
  </Folder>
</Document>

预期输出:2,实际:2 它计算Folder节点,而不是Folder子节点。 3个文件夹提供3等等。

在单节点示例中,我该如何计算Folder节点而不是它的子节点?

1 个答案:

答案 0 :(得分:0)

crack gem会将相同的标记放在与数组相同的键下。如果你试试这个:

require 'crack'

body = Crack::XML.parse("<Document> <Folder><name></name><placemark></placemark></Folder><Folder><name></name><placemark></placemark></Folder></Document>")

body将是:

=> "{\"Document\"=>{\"Folder\"=>[{\"name\"=>nil, \"placemark\"=>nil}, {\"name\"=>nil, \"placemark\"=>nil}]}}"

意味着body["Folder"]是一个包含两个元素的数组(两个'Folder'标记),而count将会返回2

为什么''的数量总是计数的结果。