В поисках конкретных упоминаний ключевых слов я недавно использовал скрипт python для анализа нескольких тысяч XML файлов в один CSV. В дополнение к ключевым словам, мой скрипт получил номер строки и XML файл, в котором было найдено каждое ключевое слово.
Id нравится знать, в каком элементе находится мое ключевое слово, и как минимум два или три родительских элемента, которые раньше были.
Например, если "золотой ретривер" найден в <p>
дочернего элемента <canine>
, Id любит знать предыдущие два или три родительских элемента: <species>
, <genus>
и <family>
и т.д.,
Вот что я до сих пор, но я не уверен, что я на правильном пути. Я нахожусь в затруднительном положении и программирую уже месяц. Это что-то, что я могу сделать только с номером строки?
function getHierarchy(node, parentCount, list = []){
const parent = node.parentElement;
if(!!!parent) return list;
if(parentCount !== undefined && list.length === parentCount) return list;
list.push(parent);
return getHierarchy(parent, parentCount, list);
}
function readXml(xmlString){
const parser = new DOMParser();
return parser.parseFromString(xmlString, 'text/xml');
}
const xml = readXml(xmlData);
const target = Array.from(xml.getElementsByTagName('example')).find(p=>p.textContent.trim() === 'example');
const hierarchy = getHierarchy(target, 3);
console.log(hierarchy);
Почему бы не использовать jQuery следующим образом:
const xml = "<family><genus><species><canine><p>golden retriever</p></canine></species></genus></family>";
const xmlDoc = $.parseXML(xml)
$xml = $(xmlDoc)
const $title = $xml.find( ":contains('golden retriever')");
console.log($title.html());