0

这是我克隆 XML 节点的代码。

int numberOfNewOffers = Integer.parseInt(oProps.getProperty("prop2","3"));
Node offers = doc.getDocumentElement().getElementsByTagName("OF_DATA").item(0);
Node offer = null;
for (int i = 0; i < offers.getChildNodes().getLength(); ++i) {
  if (offers.getChildNodes().item(i).getNodeName() == "OFX") {
    offer = offers.getChildNodes().item(i);
  }
}
if (offer != null) {
  for (int i = 0; i < numberOfNewOffers; ++i) {
    Node newOffer = offer.cloneNode(true);
    offers.appendChild(newOffer);
  }
}

这些是我克隆的节点:

<OF_DATA>
  <OFX>
    <ID>AVI</ID>
    <ON>6</ON>
    <END>11001</END>
    <NAME>Ed</NAME>
  </OFX>
  <OFX>
    <ID>AVI</ID>
    <ON>6</ON>
    <END>11001</END>
    <NAME>Ed</NAME>
  </OFX>
  <OFX>
    <ID>AVI</ID>
    <ON>6</ON>
    <END>11001</END>
    <NAME>Ed</NAME>
  </OFX>
</OF_DATA>

我怎样才能使<ID>每个克隆中的元素总是不同的?我被告知要使用随机。

4

1 回答 1

0

如果你只有一个thread,你可以这样使用:int nextId;克隆时,使用yourNodeId=nextId++;如果你希望 id 即使在程序重新启动后也是唯一的,你可以将 nextId 值保存到磁盘和从磁盘恢复。

如果您有多个线程:尝试使用上面的建议,但使用lock. 或者给每个线程一个区域(例如给thread1 0-100000,给thread2 100000-200000),然后按上面做。

于 2015-03-13T04:13:19.117 回答