如何使用jQuery解析XML?

SRA*_*SRA 39 javascript xml jquery

我如何解析XML,以及如何使用jQuery导航结果?这是我的示例XML:

<Pages>
  <Page Name="test">
    <controls>
      <test>this is a test.</test>
    </controls>
  </Page>
  <Page Name = "User">
    <controls>
      <name>Sunil</name>
    </controls>
  </Page>
</Pages>
Run Code Online (Sandbox Code Playgroud)

我想通过这条路径找到节点Pages- > Page Name- > controls- > test

Luw*_*uwe 41

有这个$.parseXML功能:http://api.jquery.com/jQuery.parseXML/

你可以像这样使用它:

var xml = $.parseXML(yourfile.xml),
  $xml = $( xml ),
  $test = $xml.find('test');

console.log($test.text());
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一个对象,你需要一个插件.例如,这个插件会将您的XML转换为JSON:http://www.fyneworks.com/jquery/xml-to-json/

  • Gosh ......问题是"如何使用此层次结构页面 - >页面名称 - >控制 - >测试找到节点的详细信息?" 不是"我如何解析XML文件"我是对的还是我是对的? (2认同)
  • @WTK:标题是*如何使用jquery*解析xml.OP用另一句话意味着什么,我实际上不知道...... (2认同)

Raf*_*fay 17

您可以使用 .parseXML

var xml='<Pages>
          <Page Name="test">
           <controls>
              <test>this is a test.</test>
           </controls>  
          </Page>
          <page Name = "User">
           <controls>
             <name>Sunil</name>
           </controls>
          </page>
        </Pages>';
Run Code Online (Sandbox Code Playgroud)

jQuery的

    xmlDoc = $.parseXML( xml ),
    $xml = $( xmlDoc );
    $($xml).each(function(){
       alert($(this).find("Page[Name]>controls>name").text());
     });
Run Code Online (Sandbox Code Playgroud)

这里是小提琴http://jsfiddle.net/R37mC/1/

  • 注意:您需要在XML行的末尾添加反斜杠,否则Javascript解释器不会将其作为一个字符串接受. (4认同)

Jen*_*and 13

我假设您正在从外部文件加载XML.有了$.ajax()它,实际上非常简单:

$.ajax({
    url: 'xmlfile.xml',
    dataType: 'xml',
    success: function(data){
        // Extract relevant data from XML
        var xml_node = $('Pages',data);
        console.log( xml_node.find('Page[Name="test"] > controls > test').text() );
    },
    error: function(data){
        console.log('Error loading XML data');
    }
});
Run Code Online (Sandbox Code Playgroud)

此外,您应该对XML节点命名保持一致.你有小写和大写节点名(<Page><page>)当您尝试使用XML树选择这可能会造成混淆.


Vic*_*cky 9

$xml = $( $.parseXML( xml ) );

$xml.find("<<your_xml_tag_name>>").each(function(index,elem){
    // elem = found XML element
});
Run Code Online (Sandbox Code Playgroud)