这是我克隆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>
元素始终不同?我被告知要随机使用。
答案 0 :(得分:0)
如果您只有一个thread
,则可以在克隆时使用int nextId;
,使用yourNodeId=nextId++;
如果您愿意,可以在磁盘上保存和恢复nextId值即使在程序重启后,id也是唯一的。
如果你有多线程:尝试使用上面的建议,但使用lock
。或者给每个线程一个区域(例如,thread1给出0-100000,thread2给出100000-200000),然后按上述方式执行。