Библиотеки для конвертации XML в JSON и наоборот - PullRequest
4 голосов
/ 27 мая 2010

Мне нужно преобразовать один документ, отформатированный в XML, в JSON и наоборот.

Я считаю, что это общее требование, и, возможно, есть еще одна библиотека, которая выполняет эту работу.

Знаете ли вы?

Ответы [ 3 ]

1 голос
/ 27 мая 2010

Не C #, а чистая реализация XSLT 2.0 , которая преобразует объект JSON в документ XML:

Посмотрите f:json-document() из библиотеки FXSL 2.x .

Используя эту функцию, очень легко включить JSon и использовать его так же, как ... XML.

Например, можно просто написать следующее выражение XPath:

f:json-document($vstrParam)/Students/*[sex = 'Female']

и получить всех детей Students с sex = 'Female'

Вот полный пример:

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:f="http://fxsl.sf.net/"
 exclude-result-prefixes="f xs"
 >
 <xsl:import href="../f/func-json-document.xsl"/>

 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vstrParam" as="xs:string">
{

  "teacher":{
    "name":
      "Mr Borat",
    "age":
      "35",
    "Nationality":
      "Kazakhstan"
             },


  "Class":{
    "Semester":
      "Summer",
    "Room":
      null,
    "Subject":
      "Politics",
    "Notes":
      "We're happy, you happy?"
           },

  "Students":
    {
      "Smith":
        {"First Name":"Mary","sex":"Female"},
      "Brown":
        {"First Name":"John","sex":"Male"},
      "Jackson":
        {"First Name":"Jackie","sex":"Female"}
    }
    ,


  "Grades":

    {
      "Test":
      [
        {"grade":"A","points":68,"grade":"B","points":25,"grade":"C","points":15},

        {"grade":"C","points":2, "grade":"B","points":29, "grade":"A","points":55},

        {"grade":"C","points":2, "grade":"A","points":72, "grade":"A","points":65}
       ]
    }


}
 </xsl:variable>

 <xsl:template match="/">
    <xsl:sequence select=
     "f:json-document($vstrParam)/Students/*[sex = 'Female']"/>

 </xsl:template>
</xsl:stylesheet>

Когда указанное преобразование применяется к любому XML-документу (игнорируется), получается правильный результат :

<Smith>
   <First_Name>Mary</First_Name>
   <sex>Female</sex>
</Smith>
<Jackson>
   <First_Name>Jackie</First_Name>
   <sex>Female</sex>
</Jackson>
0 голосов
/ 27 мая 2010

Я не уверен насчет json в xml, но мы используем этот шаблон xml to json xsl, что очень эффективно в CMS, основанной на XML, довольно удобно повторно использовать существующие структуры XML для приложений ajax.

http://code.google.com/p/xml2json-xslt/

0 голосов
/ 27 мая 2010

Проверить Json.NET . Это отличная библиотека, в которую легко попасть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...