我一直在尝试解析来自Web服务的XML响应。这是它返回的一个例子。
$title = $xml.find("Target").attr("TotalScore");
这有效,但我想获取属性的值。我尝试添加:
^http(s)?://(www\.)?facebook.([a-z]+)/(?!(?:video\.php\?v=\d+|usernameFB/videos/\d+)).*$
但我什么都没得到。有什么想法吗?
答案 0 :(得分:1)
您正在尝试获取元素的值,而不是在执行.attr()时已添加到var的属性值;
试试这个:
<script>
var xml = "<?xml version='1.0' encoding='utf-8'?><campaign guid='799223B1-24A7-4F01-8DAE-632E6F68F845'><LeaderBoard><Target Rank='1' TotalScore='138000' FirstName='Shane' LastName='Foster' TargetCompanyName='[Acme]' DisplayName=''>Hello World</Target></LeaderBoard></campaign>",
xmlDoc = $.parseXML(xml),
$xml = $(xmlDoc),
$title = $xml.find("Target").attr("TotalScore");
alert($title);
</script>
答案 1 :(得分:0)
首先尝试这种方法,你需要使用ajax将xml文件的路径抛到webservice,然后让webservice在后端获取你的数据
/// convert xml data to datatable
DataSet ds = new DataSet();
/// your xml file path
ds.ReadXml(Server.MapPath("~/") + "XMLData\\here.xml");
DataTable dt = ds.Tables[0];
/// new datatable to store value of xml datas
DataTable newDt = new System.Data.DataTable();
newDt.Columns.Add("Title");
newDt.Columns.Add("Author");
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
string Title = "";
string author = "";
if (row["Title"] != null && row["Title"].ToString() != "")
{
Title = row["Title"].ToString();
}
if (row["Author"] != null && row["Author"].ToString() != "")
{
author = row["Author"].ToString();
}
newDt.Rows.Add(Title, author);
}
}