Как я могу извлечь часть XML-документа, используя преобразование jquery (xslt)? - PullRequest
1 голос
/ 02 августа 2011

Я хочу знать, как я могу извлечь часть XML-документа, используя jquery, в объект, который будет преобразован через 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>

Допустим, я просто хочу первый блок ... и хочу сохранить его как объект или строку. Как это можно сделать с помощью jquery? После извлечения блока XML я могу правильно объединиться с документом XSL для преобразования (XSLT). Большое спасибо за любую помощь!

UPDATE; ПОЯСНЕНИЕ:

Я прошу прощения, если мой вопрос не ясен. Пожалуйста, позвольте мне уточнить мою позицию.

Мне хорошо известно, что XML можно манипулировать, используя DOM браузера и различия между реализациями IE и не-IE. Я могу использовать такие методы, как cloneNode и selectNodes для объекта XML. На самом деле, вот как я это сделал. Теперь, если я приведу jQuery в уравнение, я бы хотел заменить все эти строки кода на jQuery способ работы с ним. То есть, возможно, есть плагин jQuery, который устраняет необходимость прямого взаимодействия с XML DOM для каждого браузера, заботясь о кросс-совместимости "за кадром". Я ищу js-фреймворк, который позаботится обо всем за меня, а не о том, как я сейчас с ним работаю, - это отдельные реализации для браузеров IE и не IE.

Надеюсь, это прояснит мой вопрос.

Большое спасибо за любую помощь.

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

В совместимых браузерах вы можете конвертировать объект документа или фрагмент в XML, используя XMLSerializer :

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>

A немного больше работы в IE, но не очень.Вам нужно создать объект XML только из тех битов, которые вам нужны, а затем получить его xml свойство:

alert(xmlObject.xml);
2 голосов
/ 02 августа 2011

С помощью 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 }
    });
1 голос
/ 17 октября 2011

После некоторых исследований выяснилось, что даже те, кто находится в сообществе jQuery, рекомендуют браузеру манипулировать XML, поскольку обычно он быстрее.

...