反序列化时,XML文档中存在错误

时间:2010-04-27 06:22:41

标签: vb.net xml-serialization serialization

我在将XML文档反序列化为对象时收到错误消息。 怎么解决这个问题?

  

XML文档(5,14)中存在错误

这是XML文档:

<?xml version="1.0"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FirstName>Khaled</FirstName>
  <LastName>Marouf</LastName>
</Customer><?xml version="1.0"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FirstName>Faisal</FirstName>
  <LastName>Damaj</LastName>
</Customer><?xml version="1.0"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FirstName>Lara</FirstName>
  <LastName>Khalil</LastName>
</Customer>

4 个答案:

答案 0 :(得分:10)

您的XML文档实际上是三个文档。例如,有效的XML文档必须只有一个根节点。此外,XML声明在文档中无效。

这是有效的XML(首先是XML声明,一个根元素):

<?xml version="1.0"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FirstName>Khaled</FirstName>
  <LastName>Marouf</LastName>
</Customer>

这不是有效的XML(多个根元素,文档中的xml声明):

<?xml version="1.0"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FirstName>Khaled</FirstName>
  <LastName>Marouf</LastName>
</Customer><?xml version="1.0"?>
<Customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FirstName>Faisal</FirstName>
  <LastName>Damaj</LastName>
</Customer>

答案 1 :(得分:8)

要展开Fredrik Mörk's answer,线索在错误消息中:(5, 14)指的是解析器认为问题所在的行号和列号。这里指出第二个XML声明,如上所述,不允许这样做。

答案 2 :(得分:0)

为您的Customer元素添加根元素。

答案 3 :(得分:0)

试试这个......

<?xml version="1.0"?>
<ArrayOfCustomer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Customer>
    <FirstName>Khaled</FirstName>
    <LastName>Marouf</LastName>
  </Customer>
  <Customer>
    <FirstName>Faisal</FirstName>
    <LastName>Damaj</LastName>
  </Customer>
  <Customer>
    <FirstName>Lara</FirstName>
    <LastName>Khalil</LastName>
  </Customer>
</ArrayOfCustomer>