2012-02-28 40 views
4

如何將一個XSD的XML轉換爲另一種非常相似但具有不同XSD文件的XML格式? XSD非常大,有許多複雜的類型,但實際的XML看起來非常相似。如何將一個XSD的XML轉換爲另一種非常相似但具有不同XSD文件的XML格式?

我有兩個XSD文件和兩個XML文件 - 他們都驗證成功的XSD文件之一。 我想將其中一個XML文件轉換爲另一個文件,以便我只能使用一個類進行進一步操作。

如何在.NET 4.0和C#4.0中執行此操作?我必須使用XSLT還是其他?如果我必須使用XSLT,我該如何做?我不確定我期望創建XSLT文檔。

這是使用AutoMapper將一個XML類轉換爲另一個類的噩夢。當我看着XML這是如此相似,所以我認爲可能有一個更簡單的方法...

+0

即使你不喜歡它:通常的做法是通過Xslt - 但如果你的方案mas非常相似,應該很容易。也許向我們展示你的Xml文檔的不同部分,這樣我們可以告訴你更多。 – Filburt 2012-02-28 15:44:06

+0

那麼,爲什麼不給出一個源XML文檔和確切的想要轉換的XML文檔的例子?請編輯問題並提供這些問題 - 那麼很多人將能夠給你想要的轉換。我們甚至可能不需要XSD。 – 2012-02-28 15:44:46

回答

2

我肯定會使用XSLT。如果XML非常相似,它不應該太難。從身份轉換開始,然後在需要改變時覆蓋它。

以下示例僅改變 「foo」 的元素爲 「杆」 的元素:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <!--Identity Template. This will copy everything as-is.--> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <!--Change "foo" element to "bar" element.--> 
    <xsl:template match="foo"> 
    <bar> 
     <xsl:apply-templates select="@*|node()"/> 
    </bar> 
    </xsl:template> 

</xsl:stylesheet> 

資源:

http://www.w3.org/TR/xslt

http://www.jenitennison.com/xslt/

http://www.mulberrytech.com/quickref/XSLT_1quickref-v2.pdf

http://www.mulberrytech.com/xsl/xsl-list/index.html#archive

另外,XSLT的重要部分是的XPath。如果你沒有開發工具(我最喜歡的是oXygen,@DimitreNovatchev有一個叫XPath Visualizer偉大的工具。

+0

感謝您的回覆和示例。聽起來很簡單。是否有很好的資源鏈接對我想要的有幫助?(複雜類型) – user610064 2012-02-28 15:59:15

+0

@ user610064 - 非常歡迎。我將爲我喜歡的資源添加一些鏈接。還有w3schools,但我不使用它。 stackoverflow.com是我最喜歡的資源。 – 2012-02-28 16:05:59

+0

下來的投票者請解釋投票嗎? – 2016-06-28 14:23:40

相關問題