尝试由于错误的char而序列化Xml(作为字符串)时出现异常

时间:2013-07-23 13:23:08

标签: c# xml

我有以下xml:

<?xml version="1.0" encoding="WINDOWS-1255"?>
<body>
    <HotelBooking>
        <customers>
            <cust>
                <custID>1111111</custID>
                <title>MR</title>
                <lastName>MASAREWH</lastName>
                <firstName>AHMAD IRAKI</firstName>
            </cust>
            <cust>
                <custID>22222222</custID>
                <title>MRS</title>
                <lastName>HAJ YAHYA IRAQI</lastName>
                <firstName>HIMAT</firstName>
            </cust>
        </customers>
        <Details>
            <name>Dublin & South</name>
        </Details>
    </HotelBooking>
</body>

当我尝试将其序列化为对象时,我得到一个例外。 System.InvalidOperationException: There is an error in XML document

尝试使用notepad ++ XML插件工具编辑此XML后,我明白问题是'&amp;' char中的:

<name>Dublin & South</name>

如果我不想更改xml本身(例如将'&amp;'替换为'AND'或类似的东西),我有什么选择? 还有更多的字符可能会使我的序列化过程失败吗?

这是任何帮助!

3 个答案:

答案 0 :(得分:7)

必须转义&字符:&amp;

<name>Dublin &amp; South</name>

您应该知道<>"'也必须进行转义(不合法)。

答案 1 :(得分:1)

xml元素主体中不允许有多个字符。例如&lt; &GT; &安培;以及属性值中的“和”。

你从中得到了xml吗?

如果您自己组建,则应使用能够处理任何需要转义或编码的字符的工具。以下是xml构建代码的一些示例:https://stackoverflow.com/a/284331/2610717

如果您没有影响它,请使用System.Security.SecurityElement.Escape()

之类的内容

底线是:看看你是否可以修复问题的根源并使用框架工具,它们可以让你的生活更轻松。

答案 2 :(得分:0)

&的正确呈现是&amp;,因此您可以更改xml