Сделаем функцию для извлечения вложенного значения - принимает корневой объект и ключи:
const getNested = (root, ...keys) => keys
.flat(Infinity)
.flatMap(n => typeof n === 'string' ? n.split('.') : n)
.reduce((p, c) => p != null ? p[c] : void 0, root);
Ключи могут быть представлены различными способами - единое значение (типа путь), несколько значений (каждое передаётся отдельным аргументом), массивы (включая вложенные):
const id = getNested(e, 'path.1.attributes.uid.textContent');
// или
const id = getNested(e, 'path', 1, 'attributes', 'uid', 'textContent');
// или
const id = getNested(e, 'path.1', [ 'attributes', [ 'uid' ] ], 'textContent');
Или есть
такая штука (UPD.
Теперь и браузерами поддерживается):
const id = e?.path?.[1]?.attributes?.uid?.textContent;