>我有以下xml文件,我正在尝试提取一些元素
<entry>
<form>
<orth>Agathe</orth>
<pron>agat</pron>
</form>
<gramGrp>
<pos>n</pos>
</gramGrp>
<sense>
<cit type="trans">
<quote>Agatha</quote>
</cit>
</sense>
</entry>
<entry>
<form>
<orth>Aix-la-Chapelle</orth>
</form>
<gramGrp>
<pos>n</pos>
</gramGrp>
<sense>
<cit type="trans">
<quote>Aix-la-Chapelle</quote>
</cit>
</sense>
</entry>
我已经提取了所有元素,但我只需要那些在 pos 元素中有 n 的元素。
function parseWordsAlt(xml) {
// this reads the XML and puts the whole structure in the variable xmlDoc
var xmlDoc = xml.responseXML;
// this takes all the entries which has tag names orth
var resultOrth = xmlDoc.getElementsByTagName("orth");
// this takes all the entries which has tag names orth
var resultTranslation = xmlDoc.getElementsByTagName("quote");
// cycles through the first n tags named orth
var n=20;
for (var i=0;i<n;i++) {
for (var j=0;j<n;j++) {
var resultWord1=resultOrth[i].childNodes[0].nodeValue;
var resultWord2=resultTranslation[j].childNodes[0].nodeValue;
}
}
}
我很抱歉我的糟糕行话,但我是新手。你能帮我这个吗?
有一些
细节我们不知道,作为您正在使用的环境,但在这里您有一个小的概念证明,可以帮助您获得解决方案:检查每个条目,如果它满足您的条件,则取您需要的值:
var xml=document.getElementById("xml").innerHTML;
function parseWordsAlt(xmlDoc) {
// this takes all the entries
var entries = xmlDoc.getElementsByTagName("entry");
for (var i=0;i<entries.length;i++) {
var pos=entries[i].getElementsByTagName("pos");
if (pos[0].textContent==="n") {
var orth = entries[i].getElementsByTagName("orth")[0].textContent;
var quote = entries[i].getElementsByTagName("quote")[0].textContent;
console.log(`${orth},${quote}`);
}
}
}
parseWordsAlt(new DOMParser().parseFromString(xml, "text/xml"));
<template id="xml">
<entries>
<entry>
<form>
<orth>Agathe</orth>
<pron>agat</pron>
</form>
<gramGrp>
<pos>n</pos>
</gramGrp>
<sense>
<cit type="trans">
<quote>Agatha</quote>
</cit>
</sense>
</entry>
<entry>
<form>
<orth>Aix-la-Chapelle</orth>
</form>
<gramGrp>
<pos>n</pos>
</gramGrp>
<sense>
<cit type="trans">
<quote>Aix-la-Chapelle</quote>
</cit>
</sense>
</entry>
</entries>
</template>