2014-05-12 1 views
-1

응답을 XML 형식으로 반환하는 서비스를 호출하고 있습니다. 응답은 xml 지침을 따르지 않으며 새로운 줄과 "\"를 포함합니다.새 줄과 이스케이프 문자로 XML 비 직렬화 C#

형식 문제로 인해 deserialization이 실패했습니다.

XML 형식 :

\r\n\r\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<N><details><date>25042014</date><orderNumber>OrderNumber   </orderNumber><Response>1</Response></details> 

나는 직렬화하기 전에 새로운 라인 "\"를 제거하여 문제를 해결했다하지만 존재하는 경우 깨끗한 솔루션을 찾고 있었다.

+0

최상의 솔루션은 내장 된 시리얼 라이저/디시리얼라이저를 사용하는 것입니다. 이 엔진은 이미 사용자를 대신하여 처리하며 대부분의 경우를 잘 처리 할 수 ​​있습니다. – Falgantil

+0

내장 된 디시리얼라이저를 사용하고 있지만 문제가 있습니다. –

답변

1

XML 파일은 잘 정의되어 있어야하며 XSD 구조에 해당해야합니다. 이스케이프 시퀀스와 새 행은 유효한 xml을 파괴하므로 XSD 구조에 해당하지 않으므로 차례로 deserialization이 실패하게됩니다. 내가 아는 한, 파일을 미리 읽고 불필요한 문자와 시퀀스를 제거한 다음 다시 저장하는 것을 제외하고는 그 주위에 방법이 없습니다. XmlDocument으로 읽을 때 성공적으로 직렬화 해제 될 수 있습니다.

+0

그냥 추가 : 읽기, 파일로 다시 저장 한 다음 다시 읽는 것이 필요하지 않을 수 있습니다. HusseinX의 직렬화 계층에 따라 파일/스트림을'string'으로 읽어 들여 문자열을 조작 한 다음 deserializer 메커니즘에 공급하면 변경 내용이 메모리 내에서 만들어 질 수 있습니다. –

+0

XML 파싱도 시도했는데 동일한 문제가 있습니다. 그래서이 포맷을 사용하면 포맷팅을 조정하지 않으면 어떻게 할 수 있습니까? –

+0

@ HusseinX 나는 이틀 전에 같은 문제에 직면했다. 그리고 이것이 내가 생각해 낸 해결책이었다. 크리스 싱클레어 (Chris Sinclair)가 언급했듯이 메모리로 작업하는 것이 가능하지만, 수정 된 파일을 하드 드라이브에 저장하고 파일을 다시 읽는 것은 좋은 해결책입니다. 특히 나중에 유효한 파일로 작업하려는 경우 더욱 그렇습니다. –