XML文档中存在错误(30,14)FormatException:输入字符串的格式不正确。

时间:2018-04-17 12:55:54

标签: c# xml xml-deserialization

我首先要道歉,因为我已经在网站上发现了大量有关此类问题的问题。

我正在尝试将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>

没有其他行存在错误(但是......)所以我不确定问题出在哪里......如果它显得非常明显,那么我再次道歉并且如果需要的话会很乐意删除这个问题。

1 个答案:

答案 0 :(得分:1)

问题是错误上方行中的空<Phone />元素。由于它是空的,并且您的Phone类型可能是某种数字类型,因此XML解析器会尝试解析抛出异常的空字符串(例如,使用Int32.Parse(""))。我不知道您使用哪种反序列化方法but a nullable type might help.