0

読み取る必要がある XML の BCP (t-sql) 形式のファイルの数が増え続けています。xsd.exe といくつかの BCP 形式のファイルを使用して xsd ファイルを作成し、xml ファイルをオブジェクトとして読み取ろうとします。しかし、次のように失敗します。

未処理の例外: System.InvalidOperationException: XMLdocument にエラーがあります (4、6)。---> System.InvalidOperationException: 指定された型が認識されませんでした: name='CharTerm', namespace='http://schemas.microsoft.com/sqlserver/2004/bulkload/format', at .

XML ファイルは次のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RECORD>
    <FIELD ID="1" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="32"/>
    <FIELD ID="2" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="4"/>
    <FIELD ID="3" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="4"/>
    <FIELD ID="4" xsi:type="CharTerm" TERMINATOR=";" MAX_LENGTH="20"/>
    <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="16"/>
  </RECORD>
  <ROW>
    <COLUMN SOURCE="1" NAME="col1" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="2" NAME="col2" xsi:type="SQLINT"/>
    <COLUMN SOURCE="3" NAME="col3" xsi:type="SQLINT"/>
    <COLUMN SOURCE="4" NAME="col4" xsi:type="SQLNVARCHAR"/>
    <COLUMN SOURCE="5" NAME="col5" xsi:type="SQLFLT4"/>
  </ROW>
</BCPFORMAT>

次のように XML ファイルを読みます。

        FileStream fs = File.OpenRead(formatFileName);
        XmlSerializer serializer = new XmlSerializer(typeof(FormatSchemasXml.BCPFORMAT));
        FormatSchemasXml.BCPFORMAT bcp_format = (FormatSchemasXml.BCPFORMAT)serializer.Deserialize(fs);
        fs.Close();

外部 xmlns 参照は使用されていないようです。多くのドキュメントを検索しましたが、これを修正する方法がわかりませんでした。できれば、BCP XML 形式のファイルを変更する必要はありません (そのまま使用したいと思います)。

提案?

4

0 に答える 0