Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLXML BulkLoader未引发任何错误,但未插入任何数据_C#_Xml_Xsd_Bulkloader - Fatal编程技术网

C# SQLXML BulkLoader未引发任何错误,但未插入任何数据

C# SQLXML BulkLoader未引发任何错误,但未插入任何数据,c#,xml,xsd,bulkloader,C#,Xml,Xsd,Bulkloader,我正试图将C代码中的SQLXMLBulkLoader4用于SQL2008DB。但出于某种原因,它根本不插入任何行,尽管没有抛出任何错误。我使用了bulkloads自己的错误日志文件(检查可能不会导致崩溃的任何错误),但没有报告任何错误 我有一个从供应商处下载的XML文件(基本上是一个产品列表),我编写了一个XSD来将字段与数据库相匹配。除了写入这些特定的表之外,没有其他内容,也没有其他内容使用这些文件 我的BulkLoad代码如下所示(我用X表示了实际的连接字符串值): XML看起来是这样的(简

我正试图将C代码中的SQLXMLBulkLoader4用于SQL2008DB。但出于某种原因,它根本不插入任何行,尽管没有抛出任何错误。我使用了bulkloads自己的错误日志文件(检查可能不会导致崩溃的任何错误),但没有报告任何错误

我有一个从供应商处下载的XML文件(基本上是一个产品列表),我编写了一个XSD来将字段与数据库相匹配。除了写入这些特定的表之外,没有其他内容,也没有其他内容使用这些文件

我的BulkLoad代码如下所示(我用X表示了实际的连接字符串值):

XML看起来是这样的(简而言之,下面的所有内容都只是几个产品字段和更多产品):

我编写的XSD如下所示(再次缩短):


... + 其他几个sql:关系
我对名称空间视而不见,但它们在我看来是正确的。(阅读许多类似的错误,其中不同的名称空间是原因)。 代码是从我的计算机上运行的,我的计算机和带有DB的计算机都可以使用XML和XSD文件访问网络文件夹

我试图故意更改这两个文件中的一些字段名,而BulkLoader突然在我刚刚更改的字段上抛出了一个错误

我已经将我的BulkLoader代码和XSD与我在网上找到的示例进行了比较,我找不到任何可以解释这种行为的差异。
我可能忽略了一些简单的事情,但我只是没有看到

我非常欢迎任何能为我指明正确方向的帮助

提前谢谢你


(顺便说一句,如果帖子以某种方式被关闭了,那很抱歉,这是我第一次在这里发帖,但是我做了研究,并且我尝试遵循了如何发帖的指导原则=)

跟进您对可能存在名称空间问题的怀疑

对于实例中限定的元素,名称空间确实匹配(在元素实例和元素声明之间)

但它们并不都在另一个方向匹配;模式声明了一个扩展名为的元素{http://schemas.servicestack.net/types}GetProductsResult,但在输入实例中不显示此类元素(存在GetProductsResult,但它不是命名空间限定的)

您可能希望看到,如果更改XML以使第一个开始标记读取

<GetProductsResult 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.servicestack.net/types" >

要遵循的第一条规则应该始终是:根据XSD验证XML。在您的情况下,听起来更像是您必须更改XSD而不是XML,因为您似乎试图使XSD与XML匹配—您说的是从供应商下载的
。您的解决方案应该与供应商的文件一起工作,因为如果您希望稍后重新加载他们的文件,您不希望继续更改它以适应似乎有故障的XSD


实际上,您似乎至少需要两个XSD文件:一个定义了一个没有目标名称空间的模式,另一个导入了另一个以
http://schemas.servicestack.net/types
。有很多选项可以让您从XML生成XSD,并根据XSD验证XML。

这实际上很有意义。现在,这更像是一个修复程序,让它在供应商为我们提供XSD进行验证时工作。这不是我喜欢的工作方式,而是当我们真的想尽快销售他们的产品时该怎么做……这就是问题所在!G'dang名称空间毁了我的一天。。。感谢您的快速回复!=)
<?xml version="1.0" encoding="utf-8"?>
<GetProductsResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Status xmlns="http://schemas.servicestack.net/types">
    <Code>0</Code>
    <Message>Ok</Message>
  </Status>
  <NumberOfProducts xmlns="http://schemas.servicestack.net/types">9826</NumberOfProducts>
  <Products xmlns="http://schemas.servicestack.net/types">
    <Product>
      <ProductID>1000002</ProductID>
      <CreatedDate>2011-11-24 15:54</CreatedDate>
      <UpdatedDate>2011-11-24 15:54</UpdatedDate>
      <Title>Vi tolererar inga förlorare - klanen Kennedy</Title>
      <Publisher>Piratförlaget</Publisher>
      ... And some more fields per Product
<?xml version="1.0" encoding="iso-8859-1"?>
<xs:schema targetNamespace="http://schemas.servicestack.net/types" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:sql="urn:schemas-microsoft-com:mapping-schema">

<xs:annotation>
    <xs:appinfo>

        <sql:relationship name="Status"
        parent="tblElibProduct"
        parent-key="id"
        child="tblElibStatus"
        child-key="product_id" />
                    ... + Several other sql:relationships
            </xs:appinfo>
</xs:annotation>
    <xs:element name="GetProductsResult" sql:is-constant="1">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Status" sql:is-constant="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Code" type="xs:integer" minOccurs="0" />
                        <xs:element name="Message" type="xs:string" minOccurs="0" />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="NumberOfProducts" type="xs:string" sql:is-constant="1"/>
            <xs:element name="Products" sql:is-constant="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" maxOccurs="unbounded" name="Product" sql:relation="tblElibProduct">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element minOccurs="1" maxOccurs="1" name="CreatedDate" type="xs:date" sql:field="created_date" />
                                    <xs:element minOccurs="1" maxOccurs="1" name="UpdatedDate" type="xs:date" sql:field="updated_date" />
                                    <xs:element minOccurs="1" maxOccurs="1" name="Title" type="xs:string" sql:field="title" />
<GetProductsResult 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://schemas.servicestack.net/types" >