1

假设我有以下 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<Customers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Customer.xsd">
    <Customer>
        <FirstName></FirstName>
        <LastName></LastName>
    </Customer>
    <Customer>
        <FirstName></FirstName>
        <LastName></LastName>
    </Customer>
    <Customer>
        <FirstName></FirstName>
        <LastName></LastName>
    </Customer>
</Customer>

我还创建了一个映射到适当字段的 Customer 对象。

现在,如果我尝试将其序列化为这样的通用列表:

XmlSerializer xml = new XmlSerializer(typeof(List<Customer>));

我会遇到异常,因为我的 List 未映射到与 XML 文档中的客户相同的命名空间,并且我无法将其添加为属性,因为我使用的是通用列表,而不是自定义集合

如何在不创建自定义集合的情况下告诉序列化程序将命名空间与列表匹配?

编辑:我应该详细说明一下,序列化程序抛出的异常是:

(客户 xmlns=''> 不是预期的。

现在因为我使用 List(T) 作为父节点,如何将通用列表与 XML 文档中指定的命名空间相匹配?

4

1 回答 1

1

我认为该错误与 <Customers> 节点而不是 xmlns 有关。

尝试

XmlRootAttribute xr = new XmlRootAttribute("Customers");
XmlSerializer xs = new XmlSerializer(typeof(List<Customer>), xr); 

默认情况下,它需要一个 <ArrayOfCustomer> 节点

于 2009-05-05T16:07:33.153 回答