2

我有以下 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 后,我了解到问题出在以下位置的 '&' 字符:

<name>Dublin & South</name>

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

谢谢任何帮助!

4

3 回答 3

7

&字符必须被转义:&amp;

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

您应该知道<, >,"'也必须被转义(在它们不合法的情况下)。

于 2013-07-23T13:26:12.063 回答
1

xml 元素正文中不允许有几个字符。如属性值中的< > & 以及" 和'。

你是从那里得到 xml 的吗?

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

如果您对它如何到达您没有影响,请使用类似System.Security.SecurityElement.Escape().

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

于 2013-07-23T14:41:26.353 回答
0

的正确表示&&amp;,所以你改变你的xml

于 2013-07-23T13:29:32.213 回答