插入XML数据时,将无效字符(?)作为数据记录的前缀添加到数据库列中

时间:2011-11-28 07:47:23

标签: asp.net sql sql-server

我看到正在插入数据库的数据中出现奇怪的行为。在表中插入记录时说“table1”,其中一列包含如下值:


?<?xml version="1.0" encoding="utf-8" ?> 
- <OrderPayLoad xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OrderID>182806333</OrderID> 
<CreatedDateTime>2011-11-27T22:59:37.56</CreatedDateTime> 
<MarketCode>XXX</MarketCode> 
<AccountNumber>0</AccountNumber> 
<MobileNumber>0</MobileNumber> 
<OrderTotal>0</OrderTotal> 
<OrderTaxTotal>0</OrderTaxTotal> 
<PaymentMethod>NCC</PaymentMethod> 
<ReceiptMethod>P</ReceiptMethod> 
<ShippingInfo>
<FreightTypeID>1</FreightTypeID> 
<ShippingAddressType>STANDARD</ShippingAddressType> 
</ShippingInfo>
<BillingInfo>
<BillToZip>-</BillToZip> 
</BillingInfo>
<OrderDetails /> 
<PaymentCard /> 
<OrderRoutingID>2</OrderRoutingID> 
</OrderPayLoad>

直到我到达dbTransaction.Commit();我在列中看到了上面的XML数据。当我检查数据库并提取相同的记录时,我看到一个额外的字符加上XML的前缀。

知道为什么会这样吗?需要帮助尽快

3 个答案:

答案 0 :(得分:0)

您错过了结束标记</OrderPayLoad>,因此下面是正确的xml,请使用此代码:

<?xml version="1.0" encoding="utf-8" ?> 
<OrderPayLoad xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <OrderID>182806333</OrderID> 
    <CreatedDateTime>2011-11-27T22:59:37.56</CreatedDateTime> 
    <MarketCode>XXX</MarketCode> 
    <AccountNumber>0</AccountNumber> 
    <MobileNumber>0</MobileNumber> 
    <OrderTotal>0</OrderTotal> 
    <OrderTaxTotal>0</OrderTaxTotal> 
    <PaymentMethod>NCC</PaymentMethod> 
    <ReceiptMethod>P</ReceiptMethod> 
    <ShippingInfo>
        <FreightTypeID>1</FreightTypeID> 
        <ShippingAddressType>STANDARD</ShippingAddressType> 
    </ShippingInfo>
    <BillingInfo>
        <BillToZip></BillToZip> 
    </BillingInfo>
    <OrderDetails /> 
    <PaymentCard /> 
    <OrderRoutingID>2</OrderRoutingID>
</OrderPayLoad>

答案 1 :(得分:0)

SQL列的数据类型是什么?前缀char可以是UTF-8使用的“BOM”(字节顺序标记)。如果您的列是text,char或varchar而不是ntext,nchar或nvarchar,则可能会在数据前面生成额外的符号。

答案 2 :(得分:0)

此问题已自动修复,最好重现它。无法找到实际的根本原因。