检索元素';使用javascript从xml文件中删除属性

检索元素';使用javascript从xml文件中删除属性,javascript,xml,Javascript,Xml,所以我有这个xml文件,我想做的事情是首先检索并显示每个艺术家的“displayName”,然后为每个艺术家元素显示所有标识符的“eventsHref”。 这是我用javascript编写的代码,因此我可以从artist元素中获取每个displayName <resultsPage status="ok"> <results> <artist displayName="someName"> <identi

所以我有这个xml文件,我想做的事情是首先检索并显示每个艺术家的“displayName”,然后为每个艺术家元素显示所有标识符的“eventsHref”。 这是我用javascript编写的代码,因此我可以从artist元素中获取每个displayName

<resultsPage status="ok">
      <results>
        <artist displayName="someName">
           <identifier eventsHref="somelink">
           </identifier>
           <identifier eventsHref="somelink">
           </identifier>

        </artist> 
        <artist displayName="someName">
           <identifier eventsHref="someName">
           </identifier>
        </artist> 
        <artist someattributes>
        </artist> 
      </results>
</resultsPage>
x=xmlDoc.documentElement;
events=xmlDoc.getElementsByTagName(“艺术家”);

对于(i=0;i,您可以使用jQuery来实现这一点,方法如下: 我假设您的javascript文件正在读取外部xml文档,因此您可以执行$.ajax来获取文件内容:

x=xmlDoc.documentElement;
events=xmlDoc.getElementsByTagName("artist");
for (i=0;i<events.length;i++)
{
    event=events[i].getAttribute("displayName");

    document.write(event+"<br>");       
}
获得xml数据后,调用函数getData:

 $.ajax({
        type: 'get',
        url: 'pathtoTheFile.xml',
        async: false, 
        dataType: 'xml', 
        success: function(data){
            getData(data);
        }, 
        error: function(data){
            console.log("error");
        }
    });
该函数用于存储DisplayNameArray中的“displayName”值和eventsHrefArray中的“eventsHref”值。然后,您可以对数据执行任何操作,包括将其添加到页面中

对于您给出的xml示例,数组的内容将是:

  function getData(data){

     var DisplayNameArray = []; 
     var eventsHrefArray = [];  

     $(data).find('artist').each(function(){
         DisplayNameArray.push($(this).attr('displayName'));

         $(this).find('identifier').each(function(){
             eventsHrefArray.push($(this).attr('eventsHref'));
         })
     }); 

     console.log(DisplayNameArray); 
     console.log(eventsHrefArray); 

 }
PS:最后的xml文件中有一个错误

编辑: 如果你想根据显示名将数据元素eventsHref分开,这很容易。但是在这种情况下,数据元素不能存储在数组中,我宁愿使用java对象(类似JSON的结构)

现在,您可以通过以下方式访问每个displayName:

    function getData(data){

     var myData = []; 
     var tmpData = {displayName: '', eventsHref: []}; //initialize a temporary object   

     $(data).find('artist').each(function(){
         tmpData.displayName = $(this).attr('displayName');

         $(this).find('identifier').each(function(){
             tmpData.eventsHref.push($(this).attr('eventsHref'));
         })


            myData.push(tmpData); 
            tmpData = {displayName: '', eventsHref: []};
     }); 

     //do something with the data here: 
     console.log(myData); 
 }
  myData[0].displayName; //of course you will have to go through the array to print the list for instance. 
您可以通过以下方式访问与该显示名相关的EventsRef列表:

    function getData(data){

     var myData = []; 
     var tmpData = {displayName: '', eventsHref: []}; //initialize a temporary object   

     $(data).find('artist').each(function(){
         tmpData.displayName = $(this).attr('displayName');

         $(this).find('identifier').each(function(){
             tmpData.eventsHref.push($(this).attr('eventsHref'));
         })


            myData.push(tmpData); 
            tmpData = {displayName: '', eventsHref: []};
     }); 

     //do something with the data here: 
     console.log(myData); 
 }
  myData[0].displayName; //of course you will have to go through the array to print the list for instance. 
对于您给出的xml示例,打印myData的内容(在删除xml文件中的错误后)将给出:

  myData[0].eventsHref; 

希望这能有所帮助。

首先感谢您的关注和回答。我的问题不仅仅是获取所有EventsRef或艺术家的显示名称。也许我没有解释得那么好。问题是每个艺术家元素都有许多标识符,这些标识符与其他元素不同,也不标准。例如,我需要使用第一个artist的displayName和2标识符的EventsRef(位于其中)等等。我向您展示的xml文件只是一个更大文件的一部分。我需要区分哪个标识符的evetsHref属于每个艺术家的displayName。PS:对不起,我的英语很好。我试着解释一下,很好,您的要求的答案在orig中我为每个displayName(艺术家)发布的最后代码我检查了所有可能的事件如果检查了新的更新我将数据放在java对象中以便您获得艺术家及其标识符之间的链接。这正是我所寻找的!非常感谢您的帮助。工作非常完美。我是这个网站的新手。不知道抱歉。