我有以下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'或类似的东西),我有什么选择? 还有更多的字符可能会使我的序列化过程失败吗?
这是任何帮助!答案 0 :(得分:7)
必须转义&
字符:&
<name>Dublin & South</name>
您应该知道<
,>
,"
和'
也必须进行转义(不合法)。
答案 1 :(得分:1)
xml元素主体中不允许有多个字符。例如&lt; &GT; &安培;以及属性值中的“和”。
你从中得到了xml吗?
如果您自己组建,则应使用能够处理任何需要转义或编码的字符的工具。以下是xml构建代码的一些示例:https://stackoverflow.com/a/284331/2610717。
如果您没有影响它,请使用System.Security.SecurityElement.Escape()
。
底线是:看看你是否可以修复问题的根源并使用框架工具,它们可以让你的生活更轻松。
答案 2 :(得分:0)
&
的正确呈现是&
,因此您可以更改xml