Случайная строка в клонированном узле.Java
Это мой код, который клонирует узлы 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>
элементы в каждом клоне всегда разные? Мне сказали использовать случайный.
1 ответ
Решение
Если у вас есть только один thread
, вы можете использовать как это: int nextId;
при клонировании используйте yourNodeId=nextId++;
И вы можете сохранить и восстановить значение nextId на диск и с диска, если хотите, чтобы идентификатор был уникальным даже после перезапуска программы.
Если у вас есть несколько потоков: попробуйте использовать приведенный выше совет, но с lock
, Или назначьте каждому потоку область (например, thread1 дается 0-100000, thread2 дается 100000-200000), затем сделайте, как указано выше.