无法使用 javascript 和 jquery 获取 XML 属性值

Can not get XML attribute value using javascript and jquery

本文关键字:获取 XML 属性 jquery javascript      更新时间:2023-09-26

XML:

<?xml version="1.0" encoding="utf-8"?>
<Publications LatestPubDate="2012-12-20" Version="0">
<PubYear Year="2012">
<PubMonth Month="12">
<Publication Name="Headline" PubDay="15" ThumbnailWidth="300" ThumbnailHeight="400" ThumbnailPath="FlippingBook/Dev/Frontend/OutPutFolder/Headline/2012/12/15/0/0/A/Content/1/Pg001.jpg" Version="0" Visible="true"/>
<Publication Name="Headline" PubDay="16" ThumbnailWidth="300" ThumbnailHeight="400" ThumbnailPath="FlippingBook/Dev/Frontend/OutPutFolder/Headline/2012/12/16/0/0/A/Content/1/Pg001.jpg" Version="0" Visible="true"/>
<Publication Name="Headline" PubDay="17" ThumbnailWidth="300" ThumbnailHeight="400" ThumbnailPath="FlippingBook/Dev/Frontend/OutPutFolder/Headline/2012/12/17/0/0/A/Content/1/Pg001.jpg" Version="0" Visible="true"/>
<Publication Name="Headline" PubDay="18" ThumbnailWidth="300" ThumbnailHeight="400" ThumbnailPath="FlippingBook/Dev/Frontend/OutPutFolder/Headline/2012/12/18/0/0/A/Content/1/Pg001.jpg" Version="0" Visible="true"/>
<Publication Name="Headline" PubDay="19" ThumbnailWidth="300" ThumbnailHeight="400" ThumbnailPath="FlippingBook/Dev/Frontend/OutPutFolder/Headline/2012/12/19/0/0/A/Content/1/Pg001.jpg" Version="0" Visible="true"/>
<Publication Name="Headline" PubDay="20" ThumbnailWidth="300" ThumbnailHeight="400" ThumbnailPath="FlippingBook/Dev/Frontend/OutPutFolder/Headline/2012/12/20/0/0/A/Content/1/Pg001.jpg" Version="0" Visible="true"/>
</PubMonth>
</PubYear>
</Publications>

.js:

function get_past_issues(year,month) {  
    $.ajax({ url: './demo/Headline/PublicationList.xml', 
         async: false,
         success: function(xml) {
            //$("#dialog").append("<div class = 'issues'>");    
            $(xml).find("Publications").find($("PubYear[Year='" + year + "']")).each(function() {
                //alert ($(this).attr ('Year'));
                    $(xml).find("Publications").find($("PubMonth[Month='" + month + "']")).find("Publication").each(function() {
                        alert ($(this).attr ('ThumbnailPath'));
                    });
            });
            //$("#dialog").append("</div>");    
        }
    });

例如,我提供的函数年份是 2012 年,月份是 12,但是,fliter $("PubYear[Year='" + year + "']") 似乎不适用于查找函数?如何解决问题?谢谢

使用 fliter find("PubYear[Year='" + year + "']")

function get_past_issues(year,month) {  
    $.ajax({ url: './demo/Headline/PublicationList.xml', 
         async: false,
         success: function(xml) {
            //$("#dialog").append("<div class = 'issues'>");    
            $(xml).find("Publications").find("PubYear[Year='" + year + "']").each(function() {
                //alert ($(this).attr ('Year'));
                    $(xml).find("Publications").find("PubMonth[Month='" + month + "']").find("Publication").each(function() {
                        alert ($(this).attr ('ThumbnailPath'));
                    });
            });
            //$("#dialog").append("</div>");    
        }
    });
}

在这里我以这种方式使用它:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
    <script>
        function get_past_issues(year, month){
            $.ajax({ 
                url: 'list.xml', 
                type:"get",
                async: false,
                success: function(xml) { 
                        $(xml).find("PubYear[Year='" + year + "']").find("PubMonth[Month='" + month + "']").each(function(){
                            console.log($(this).find('Publication').attr('ThumbnailPath'));
                         // Output is:FlippingBook/Dev/Frontend/OutPutFolder/Headline/2012/12/15/0/0/A/Content/1/Pg001.jpg
                        });
                },
                error:function(){
                    alert('err');
                }
            });
        }
        $(function(){
            get_past_issues(2012, 12);
        });
    </script>