使用javascript从XML文件填充多个选择下拉列表

使用javascript从XML文件填充多个选择下拉列表,javascript,xml,drop-down-menu,html-select,Javascript,Xml,Drop Down Menu,Html Select,我使用javascript从xml文件中填充了两个下拉列表 以下是我的xml日期: <root> <DocTypes> <doctype>Protocols</doctype> <owngsite>CIMA</owngsite> </DocTypes> <DocTypes> <doctype>Form</doctype> <owngsite

我使用javascript从xml文件中填充了两个下拉列表

以下是我的xml日期:

<root>
<DocTypes>
    <doctype>Protocols</doctype>
    <owngsite>CIMA</owngsite>
</DocTypes>
<DocTypes>
    <doctype>Form</doctype>
    <owngsite>EU Headquaters</owngsite>
</DocTypes>
<DocTypes>
    <doctype>Master Batch Record</doctype>
    <owngsite>France (Country Operations)</owngsite>
</DocTypes>
<DocTypes>
    <doctype>Method</doctype>
    <owngsite>Maisons-Alfort CDC</owngsite>
</DocTypes>
<DocTypes>
    <doctype>Policy</doctype>
    <owngsite>Malvern</owngsite>
</DocTypes>
<DocTypes>
    <doctype>Procedure</doctype>
    <owngsite>Salt Lake City</owngsite>
</DocTypes>
<DocTypes>
    <doctype>Specification</doctype>
    <owngsite>Mitry Mory</owngsite>
</DocTypes>
<DocTypes>
    <doctype>Standard</doctype>
    <owngsite>Nevers</owngsite>
</DocTypes>
<DocTypes>
    <doctype></doctype>
    <owngsite>Savigny Le Temple</owngsite>
</DocTypes>
<DocTypes>
    <doctype></doctype>
    <owngsite>Sens</owngsite>
</DocTypes>
<DocTypes>
    <doctype></doctype>
    <owngsite>WC-Frazer</owngsite>
</DocTypes>

</root>
以下是我的javascript:

var xhr;
if(window.XMLHttpRequest){
    xhr = new XMLHttpRequest;
}
/*else{
    xhr = new ActiveXObject("Microsoft.XMLHTTP"); //code for IE6, IE5
}*/

xhr.open('GET','metaFiles/searchPage/js/docType.xml',true);
xhr.send();

window.onload = function()
{
    var x, xmldoc;
    xmldoc = xhr.responseXML;
    x = xmldoc.getElementsByTagName("DocTypes");
    var select1 = document.getElementById("doctype");
    var option = document.createElement('option');
    option.text = "All";
    option.value = "empty";
    select1.add(option);
    var option2;
    //document.write(x.length);
    for (var i = 0; i <x.length; i++) 
    {
        option2 = document.createElement('option');
        option2.text = x[i].getElementsByTagName("doctype")[0].childNodes[0].nodeValue;
        option2.value = x[i].getElementsByTagName("doctype")[0].childNodes[0].nodeValue;
        select1.add(option2);
    }
    
    var select2 = document.getElementById("owngsite");
    var option4 = document.createElement('option');
    option4.text = "All";
    option4.value = "empty";
    select2.add(option4);
    var option3;
    for(var i=0; i<x.length; i++)
    {
        option3 = document.createElement('option');
        option3.text = x[i].getElementsByTagName("owngsite")[0].childNodes[0].nodeValue;
        option3.value = x[i].getElementsByTagName("owngsite")[0].childNodes[0].nodeValue;
        //document.write(x[i]);
        select2.add(option3);
            
    }

    return xhr;
}
问题是我拥有的站点列表的数据比doctype多。因此,当我试图跳过最后三个xml标记的doctype数据时,javascript中出现了未定义的错误。 有没有办法解决这个问题?
提前谢谢。

换个角度看。您希望按标记名获取节点列表的文本内容,并筛选空值和重复值

const sourceDocument=new DOMParser.parseFromStringgetXML,“text/xml”; 添加选项 document.querySelector'docTypeSelect', sourceDocument.getElementsByTagName'doctype' ; 添加选项 document.querySelector'siteSelect', sourceDocument.getElementsByTagName'owngsite' ; 功能添加选项选择,节点{ 常量值=数组 .fromnodes //转换为字符串 .mapnode=>node.textContent.trim //筛选空值和重复值 滤器 值,索引,self=>value!=&&self.indexOfvalue===index ; //删除所有选择的子节点 select.textContent=; //添加默认值 让option=document.createElement'option'; option.value=; option.text='All'; 选择.appendChildoption; //迭代值 对于值的常量值{ //添加选项 option=document.createElement'option'; option.value=值; option.text=值; 选择.appendChildoption; } } 函数getXML{ 返回` 协议 CIMA 类型 欧盟总部 主批次记录 法国国家业务 方法 艾尔弗特疾病预防控制中心 政策 马尔文 程序 盐湖城 规格 米特里莫里 标准 内弗斯 萨维尼神庙 森斯 WC弗雷泽 `; }
你知道Java和JavaScript是完全不相关的,对吗?你有什么有价值的贡献吗?是的,我完全理解两者的不同。我在这里寻找一个解决方案,可以使用javascript或java。这就是为什么标签。没有理由仅仅因为一个标签就投反对票。你可以简单地编辑它。