如何使用 jQuery 解析 XML?

IT技术 javascript jquery xml
2021-02-07 02:27:17

如何解析 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>

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

6个回答

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

你可以这样使用它:

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

console.log($test.text());

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

天哪......问题是“我如何使用这个层次结构 Pages->pagename->controls->test 找到节点的详细信息?” 不是“我如何解析 XML 文件”我是对的还是对的?
2021-03-22 02:27:17
没有插件是不可能的,请参阅我的编辑。编辑啊,你不是问这个问题的人。你当然是对的,但这并不意味着我们不能提出其他建议。
2021-03-24 02:27:17
嗨,行 $xml = $( xml ) 的确切含义是什么?
2021-03-29 02:27:17
@WTK:标题是如何使用 jquery 解析 xmlOP对另一句话的含义,我实际上不知道......
2021-04-05 02:27: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>';

查询

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

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

@Jens Roland 是的,但在小提琴中我删除了空格,并删除了 tnx 信息
2021-03-23 02:27:17
注意:您需要在 XML 行的末尾添加反斜杠,否则 Javascript 解释器不会将其作为一个字符串接受。
2021-03-29 02:27:17

我假设您是从外部文件加载 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');
    }
});

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

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

$xml.find("<<your_xml_tag_name>>").each(function(index,elem){
    // elem = found XML element
});
这个解决方案真的很好,你能用完整的代码改进它吗?非常感谢!+1
2021-03-21 02:27:17

看看 jQuery 的.parseXML() [docs]

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

var $test = $xml.find('Page[Name="test"] > controls > test');