C# SQLXMLBULKLOAD实用程序不使用';我无法使用XML中的名称空间

C# SQLXMLBULKLOAD实用程序不使用';我无法使用XML中的名称空间,c#,xml,xsd,sqlxml,bulk-load,C#,Xml,Xsd,Sqlxml,Bulk Load,所以我有不能更改的XML,它基本上是这样的: <?xml version="1.0" encoding="UTF-8"?> <ns6:Responses xmlns:ns6="http://www.yadayada" xmlns:ns2="http://www.yadayada" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:ns4="http://www.yadayada" xmlns:ns5="http://www

所以我有不能更改的XML,它基本上是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<ns6:Responses xmlns:ns6="http://www.yadayada" xmlns:ns2="http://www.yadayada" xmlns:ns3="http://www.w3.org/2000/09/xmldsig#" xmlns:ns4="http://www.yadayada" xmlns:ns5="http://www.yadayada">
  <MessageReference>824cf96b-6130-460c-a2d4-2adc3b6ea14d</MessageReference>
</ns6:Responses>

824cf96b-6130-460c-a2d4-2adc3b6ea14d
我使用了一个手工制作的XSD,其中包含SQL注释,相关部分如下:

  <xs:element name="Responses" msdata:Prefix="ns6" sql:relation="Responses">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="MessageReference" type="xs:string" msdata:Prefix="ns6" sql:field="MessageReference" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

当我通过SQLXMLBULKLOAD实用程序执行此操作时,它不会抛出错误,但数据库中不会出现任何结果

如果我执行以下操作之一,我可以使其工作:


  • 中删除
    ns6:
    名称空间是一个相当令人失望的回答,但我自己解决了这个问题

    有两种方法可以解决此问题,或者将
    elementFormDefault=“qualified”
    更改为
    elementFormDefault=“unqualified”
    ,或者将
    form=“unqualified”
    添加到不在
    ns6
    命名空间中的每个元素

    因此,方法1是将msdata名称空间更改为:
    xmlns:msdata=“urn:schemas microsoft com:xml msdata”attributeFormDefault=“qualified”elementFormDefault=“unqualified”

    方法2是将XSD的主体更改为:

      <xs:element name="Responses" msdata:Prefix="ns6" sql:relation="Responses">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="MessageReference" form="unqualified" type="xs:string" msdata:Prefix="ns6" sql:field="MessageReference" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>