如何使用jquery提取要转换的XML文档的一部分(xslt) ?

How can I extract part of an XML document using jquery to be transformed (xslt)?

本文关键字:一部分 xslt 文档 XML 提取 jquery 转换 何使用      更新时间:2023-09-26

我想知道如何使用jquery将XML文档的一部分提取到将通过XSLT转换的对象中?那么,假设我有这样一个示例XML文档:

<nutrition>
<daily-values>
    <total-fat units="g">65</total-fat>
<saturated-fat units="g">20</saturated-fat>
<cholesterol units="mg">300</cholesterol>
<sodium units="mg">2400</sodium>
<carb units="g">300</carb>
<fiber units="g">25</fiber>
<protein units="g">50</protein>
</daily-values>
<food>
<name>Avocado Dip</name>
<mfr>Sunnydale</mfr>
<serving units="g">29</serving>
<calories total="110" fat="100"/>
<total-fat>11</total-fat>
<saturated-fat>3</saturated-fat>
<cholesterol>5</cholesterol>
<sodium>210</sodium>
<carb>2</carb>
<fiber>0</fiber>
<protein>1</protein>
<vitamins>
    <a>0</a>
    <c>0</c>
</vitamins>
<minerals>
    <ca>0</ca>
    <fe>0</fe>
</minerals>
</food>
<food>
<name>Bagels, New York Style </name>
<mfr>Thompson</mfr>
<serving units="g">104</serving>
<calories total="300" fat="35"/>
<total-fat>4</total-fat>
<saturated-fat>1</saturated-fat>
<cholesterol>0</cholesterol>
<sodium>510</sodium>
<carb>54</carb>
<fiber>3</fiber>
<protein>11</protein>
<vitamins>
    <a>0</a>
    <c>0</c>
</vitamins>
<minerals>
    <ca>8</ca>
    <fe>20</fe>
</minerals>
</food>
</nutrition>

假设我只想要第一个<食物>…& lt;/food>块,我希望将其保存为对象或字符串。如何使用jquery做到这一点?一旦提取了XML块,就可以适当地将其与XSL文档结合起来进行转换(XSLT)。非常感谢您的帮助!

更新;澄清:

如果我的问题不清楚,我很抱歉。请允许我澄清我的立场。

我很清楚XML可以通过使用浏览器的DOM以及IE和非IE实现之间的差异来操纵。我可以在XML对象上使用cloneNode和selectNodes等方法。事实上,我就是这么做的。现在,如果我将jQuery引入到这个等式中,我想用jQuery处理它的方式来替换所有这些代码行。也就是说,也许有一个jQuery插件可以消除直接与每个浏览器的XML DOM交互的需要,在"幕后"处理交叉兼容性。我正在寻找一个js框架,将照顾一切为我,而不是我如何处理它的时刻,这是IE和非IE浏览器的单独实现。

我希望这能澄清我的问题。

非常感谢您的帮助

使用jQuery.parseXML(xmlString)可以将XML字符串转换为jQuery对象,然后做任何你想做的。

如果是XML文件,可以通过AJAX获取

$.ajax({
        type: "GET",
        url: "file.xml",
        dataType: "xml",
        error: function(){},
        success: function (xml) {// you can access the parsed XML just like you do it with HTML }
    });

在兼容的浏览器中,您可以使用XMLSerializer:

将文档对象或片段转换为XML
var d = document.createElement('div');
d.id = 'div0'
var p = d.appendChild(document.createElement('p'));
var xmlString = (new XMLSerializer()).serializeToString(d);
alert(xmlString); 
// shows <div xmlns="http://www.w3.org/1999/xhtml" id="div0"><p></p></div>

在IE中多做了一点工作,但不多。您需要创建一个您想要的XML对象,然后获取它的 XML 属性:

alert(xmlObject.xml);

在做了一些研究之后,似乎就连jQuery社区中的人也建议由浏览器来完成XML操作,因为它通常更快。