У меня есть такой XML:XML DOM. Получить элемент по имени на первом уровне ребенка
<root>
<element1>
<doc>2</doc>
</element1>
<doc>1</doc>
</root>
Я хочу, чтобы получить элемент на первом уровне ребенка после корневого элемента (значение = 1). Если я делаю это через нодлисте (PL/SQL версии из XMLDOM API):
nl := getElementsByTagName(rootnode,'doc');
len := xmldom.getLength(nl);
IF LEN>0 THEN
N:=xmldom.item(nl, 0);
END IF;
RETURN N;
первый элемент в списке будет элемент со значением = 2. Как я мог обрабатывать только через дочерние узлы первого уровня ребенка без зацикливания через элементы?
Я вижу тебя используя LOOP, который я попросил избежать. Но я не могу понять, почему вы получаете результат на первой итерации (i = 0) –
@AndreyKhataev: Я зацикливаюсь, потому что 'getchildrenbytagname' возвращает' domnodelist' - количество узлов в списке может быть чем угодно. Если вам действительно нужен только первый узел из списка, вы можете использовать ту же технику, что и в своем вопросе. Разница между 'getelementsbytagname' и' getchildrenbytagname' заключается в том, что первый возвращает элементы на всех подуровнях ('root/element1/doc' и' root/doc'), но последний возвращает только дочерние элементы ('root/doc'). – user272735