繁体   English   中英

使用SSIS将XML转换为XSD

[英]XML to XSD using SSIS

我正在尝试使用SSIS将以下XML加载到SQL Server表中。 原始XML:

<RESULTS>
    <SEARCHRESULT RECORDS="3014">
        <ROW ROWNUM="1" PKField="EntityCounter">
            <COLUMN COLNUM="1" NAME="EntityCounter" DATATYPE="number">1234</COLUMN>
            <COLUMN COLNUM="2" NAME="Reference ID" DATATYPE="string">5678</COLUMN>
            <COLUMN COLNUM="3" NAME="Name" DATATYPE="string">XYZ</COLUMN>
            <COLUMN COLNUM="4" NAME="Entity Type" DATATYPE="string">LMN</COLUMN>
        </ROW>
    </SEARCHRESULT>
</RESULTS>

目标表有4列:EntityCounter,ReferenceID,Name和EntityType。 为此类文件创建XSD时,没有得到预期的输出。
XML源在输出处生成四列:ROW_ID,RWONUM,PKField和SEARCHRESULT_Id。

如下修改XML时,我能够加载数据:修改的XML:

<RESULTS>
    <SEARCHRESULT RECORDS="3014">
        <ROW ROWNUM="1" PKField="EntityCounter">
            <EntityCounter>1234</EntityCounter>
            <ReferenceID>5678</ReferenceID>
            <Name>XYZ</Name>
            <EntityType>LMN</EntityType>
        </ROW>
    </SEARCHRESULT>
</RESULTS>

当我为上述文件创建XSD并将其使用时,XML源将在输出中生成七列:ROWNUM,PKFiled,EntityCounter,ReferenceID,Name,EntityType和SEARCHRESULT_Id。

是否可以使用原始XML生成类似的输出?

感谢@MarkWojciechowicz建议使用XSLT的选项。 我可以使用以下xslt代码将原​​始xml转换为所需格式:

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

    <xsl:template match="@*|node()">
        <xsl:copy>
            <xsl:apply-templates select="@*|node()"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="COLUMN[@NAME]">
        <xsl:element name="{concat('Col_',translate(@NAME,' ',''))}">
            <xsl:value-of select="."/>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

可以使用SSIS加载修改的XML。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM