2010-09-09 29 views
0

一个XML文件,我有一个像XML文件标签:如何获得整个文本,包括从与jQuery

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<legends> 
<legend> 
<number>1</number> 
<legendString><ul><li>1.across:a system of rules of conduct or method of practice</li><li>1.down:a disagreement or argument about something important</li><li>2.down:any broad thin surface</li><li>3.across:the passage of pedestrians or vehicles </li></ul></legendString> 
</legend> 
...... 
<legends> 

我怎么能走整个文本,包括使用jQuery的标签。 字符串

<ul><li>1.across:a system of rules of conduct or method of practice</li><li>1.down:a disagreement or argument about something important</li><li>2.down:any broad thin surface</li><li>3.across:the passage of pedestrians or vehicles </li></ul> 

如果我进行函数调用,应该传递。 如果我称之为:

var legendStr = $(this).find("legendString").text(); 

标签将不会出现在legendStr。

我该怎么做。

这是jQuery脚本:

var randomnumber=Math.floor(Math.random()*233); 
    $.get("legends.xml",{},function(xml){ 



     $(xml).find("legend").each(function(){ 


       if(randomnumber == $(this).find("number").text()) 
       { 
       var c = "legendString"; 

       var legendStr = $(this).find(c).html();   


       $("#sidebar > ul").html(legendStr); 
       } 



     }); 
     },"xml"); 

回答

1

你想 $(本).find( “legendString”)。HTML()

我把在jQuery的对XML的支持一探究竟。 .html()不支持XML文档。因此,您需要使用traversing methods和/或XML DOM

因此,举例来说,你可以做一个深度优先遍历,直到你找到一个文本节点(即nodeType == 3),并且可以使用nodeName(如<ul>)和.text()获取标签名和文本。

0

尝试使用.html()方法来保存标签:

var legendStr = $(this).find('legendString').html(); 

另外请注意,.find('legendString')将寻找一个名为legendString标签,它可能不是你正在找。您可能需要:contains()选择器。

+0

这是行不通的。 – Vinod 2010-09-09 06:33:37

+0

*不工作*不是一个非常准确的问题描述。你能发表一个完整的片段来说明这个问题吗? – 2010-09-09 06:39:04

+0

你可以看看更新的代码。 – Vinod 2010-09-09 06:58:00

0

我不认为你需要的功能是在jQuery开箱即用。但你可以自己写。这里是您的出发点:

jQuery.extend(jQuery.fn, { 
outerHtml: function(tagName) { 
    var matches = this.find(tagName); 
    var result = ''; 
    for (var i=0; i<matches.length; i++) { 
     var el = matches[i]; 
     result += '<' + tagName; 

     for (var i=0; i<el.attributes.length; i++) { 
      result += ' '; 
      result += el.attributes[i].name; 
      result += "='"; 
      result += el.attributes[i].value; 
      result += "'"; 
     } 
     if (el.innerHTML == null) { result += '/>'; } 
     else { 
     result += '>'; 
     result += el.innerHTML; 
     result += '</' 
     result += tagName; 
     result += '>'; 
    } 
    return result; 
} 

}});

这样,你就能够做到

var legendString = $(this).outerHtml('legendString');