我首先要道歉,因为我已经在网站上发现了大量有关此类问题的问题。
我正在尝试将XML文档反序列化为C#对象以供以后使用,但我遇到了问题。
错误日志“XML文档中存在错误(30,14).FormatException:输入字符串的格式不正确。”暗示我的文件特别是第30行第14栏的问题是否正确?
(使用“ - ”字符省略了无关数据)
<?xml version="1.0" encoding="UTF-8"?>
<AddressBook>
<Contact>
<Name>Joe Money-Chappelle</Name>
<ContactType>-----</ContactType>
<DateofBirth>-----</DateofBirth>
<AddressLine1>-----</AddressLine1>
<AddressLine2>-----</AddressLine2>
<AddressLine3>-----</AddressLine3>
<AddressLine4 />
<Postcode>-----</Postcode>
<Email1>-----</Email1>
<Email2>-----</Email2>
<Phone>01883742871</Phone>
<Mobile>07549893431</Mobile>
<AdditionalInfo>-----</AdditionalInfo>
</Contact>
<Contact>
<Name>Connor Rice</Name>
<ContactType>-----</ContactType>
<DateofBirth>-----</DateofBirth>
<AddressLine1>-----</AddressLine1>
<AddressLine2>-----</AddressLine2>
<AddressLine3>-----</AddressLine3>
<AddressLine4 />
<Postcode>-----</Postcode>
<Email1>-----</Email1>
<Email2 />
<Phone />
<Mobile>07504500881</Mobile>
<AdditionalInfo>-----</AdditionalInfo>
</Contact>
</AddressBook>
根据该逻辑,下面的行是罪魁祸首:
<Mobile>07504500881</Mobile>
然而,它的格式与其正上方部分的对应格式相同,工作正常,如下所示:
<Mobile>07549893431</Mobile>
<Mobile>07504500881</Mobile>
没有其他行存在错误(但是......)所以我不确定问题出在哪里......如果它显得非常明显,那么我再次道歉并且如果需要的话会很乐意删除这个问题。
答案 0 :(得分:1)
问题是错误上方行中的空<Phone />
元素。由于它是空的,并且您的Phone类型可能是某种数字类型,因此XML解析器会尝试解析抛出异常的空字符串(例如,使用Int32.Parse("")
)。我不知道您使用哪种反序列化方法but a nullable type might help.