скопируйте XML с помощью XSLT в JSON - PullRequest
0 голосов
/ 11 сентября 2009

Я хотел бы скопировать XML с использованием XSLT в JSON.

Результат JSON будет выглядеть так:

 callback( {"xml":"
 <?xml version="1.0" encoding="UTF-8"?>
 <root>
 ...
 </root>
 "})

и мой XSLT до сих пор:

 <xsl:template match="/">
   <xsl:text>callback( {"xml":"</xsl:text>
    <xsl:copy-of  select="*"/>
   <xsl:text>"} )</xsl:text>
 </xsl:template>

Кто-нибудь имеет представление, что еще, кроме кавычек, я должен заменить и как заменить? Я хотел бы загрузить и проанализировать XML-файл в Javascript?

Большое спасибо,
Ральф

Ответы [ 2 ]

1 голос
/ 11 сентября 2009

Эту задачу гораздо проще выполнить с помощью JavaScript вместо XSLT только потому, что конечная грамматика не связана с XML, и потому что маловероятно, что вы преобразуете что-либо, кроме простого синтаксиса.

Вы только трансформируете синтаксис и ничего не связаны с данными, тогда это только синтаксический перевод. Это не то, для чего был разработан XSLT. Каждая технология XML имеет общий синтаксис, поэтому синтаксические преобразования не являются проблемой при формировании данных из одной грамматики XML в другую. Кроме того, это простая задача.

Вам нужно следующее: Строковый литерал, представляющий код JS массива или индекс литерала объекта до элемента данных, элемент данных с использованием innerHTML массива document.getElementsByTagName, а затем бит JS для завершения кода индекса массива или литерала объекта. Используйте цикл, чтобы пройти через каждый элемент из XML и встроить его в строковый литерал, представляющий необходимый код JS для построения каждого индекса вашего объекта JSON. Затем после завершения прикрепите соответствующее начало и конец к тому, что динамически создается, чтобы закончить синтаксис. Это должен быть очень быстрый процесс.

0 голосов
/ 11 сентября 2009

Вы можете использовать XSLT-код с открытым исходным кодом xml2json. Вы также можете написать его самостоятельно, если считаете, что текущий код неадекватен. Из того, что я видел, я думаю, что код в приведенном ниже проекте не поддерживает атрибуты (если вы можете определить, как они должны выглядеть в вашем json).

http://code.google.com/p/xml2json-xslt/ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...