C # XML десериализации - PullRequest
       9

C # XML десериализации

1 голос
/ 27 апреля 2010

У меня есть XML, в котором у меня снова есть XML, например:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Tag>
<Value1> </Value1>
<Value2><?xml version=\"1.0\" encoding=\"UTF-8\"?>... </Value2>
</Tag>

Десериализация не работает с этой строкой в ​​c #. Я строю эту строку в Java и отправляю ее в приложение c #. как я могу обойти это?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2010

XML, который вы показываете, не является правильно сформированным. Строки должны быть закодированы, прежде чем они будут помещены в поток вывода XML. Ваш XML должен выглядеть так:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Tag>
  <Value1></Value1>
  <Value2>&lt;?xml version=&quot;1.0&quot; ... </Value2>
</Tag>
1 голос
/ 27 апреля 2010

Один из подходов состоит в том, чтобы обернуть <?xml version=\"1.0\" encoding=\"UTF-8\"?>... в раздел CData:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Tag>
<Value1> </Value1>
<Value2><![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>... </Value2>]]>
</Tag>
0 голосов
/ 27 апреля 2010

Ужасный ответ, который вы не хотели слышать, заключается в том, что XML - это больше, чем просто строка. Из-за кодирования и других причин вы не можете надежно подставлять фрагменты строк в другие фрагменты и ожидать правильных документов. Если вы не используете надлежащую библиотеку XML (что, впрочем, следует во всех основных структурах), вы все равно можете взломать строки фрагментов XML, убедившись, что их кодировки на самом деле совпадают, и удалив <?xml version="1.0" encoding="UTF-8"?> от начала любого из фрагментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...