2010-05-26 177 views
4

我需要將一個在xml中格式化的文檔轉換爲JSON,反之亦然。將xml轉換爲JSON或反之亦然的庫

我相信這是一個共同的要求,也許還有一個庫,這樣做的工作。

知道了嗎?

+0

好問題(+1)。請參閱我的答案,以獲取將JSON直接從XSLT轉換爲XML的可用XSLT解決方案。 – 2010-05-26 21:52:47

+0

@nabo:如果它是用C#編寫的,它有關係嗎?如果它是用VB.NET編寫的,但是你可以從C#或其他.NET語言中調用它呢? – 2010-05-26 21:53:38

+0

@John Saunders - 你說得對,我會刪除C#標籤。它可以是任何語言,因爲我可以導入一個dll在C#中使用。 – Nabo 2010-05-26 23:41:55

回答

0

結賬Json.NET。這是一個很好的圖書館,很容易進入。

1

不是C#,但一個純粹的XSLT 2.0實現一個JSON對象轉換爲XML文檔:

已從FXSL 2.x library看看f:json-document()

使用此功能很容易將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> 
相關問題