바이트 [] 배열을 WP의 XDocument로 변환하려고합니다. 나는 다음과 같은 코드를 가지고있다.바이트 배열을 XDocument로 변환
private void btnDownload_Click(object sender, RoutedEventArgs e)
{
svc.DownloadFileCompleted += new EventHandler<DownloadFileCompletedEventArgs>(svc_DownloadFileCompleted);
svc.DownloadFileAsync("XMLFile1.xml");
}
void svc_DownloadFileCompleted(object sender, DownloadFileCompletedEventArgs e)
{
byte[] bytes = e.Result;
//string responseText = Encoding.UTF8.GetString(bytes,0,2048); // ASCII assumed
//XDocument respnseXml = XDocument.Load(responseText);
bytes = NullRemover(bytes);
using (MemoryStream stream = new MemoryStream(bytes))
{
XDocument document = XDocument.Load(stream);
}
}
private byte[] NullRemover(byte[] DataStream)
{
int i;
byte[] temp = new byte[DataStream.Length];
for (i = 0; i < DataStream.Length - 1; i++)
{
if (DataStream[i] == 0x00) break;
temp[i] = DataStream[i];
}
byte[] NullLessDataStream = new byte[i];
for (i = 0; i < NullLessDataStream.Length; i++)
{
NullLessDataStream[i] = temp[i];
}
return NullLessDataStream;
}
나는 파일을 다운로드하는 웹 서비스를 만들었다. 내 코드가 잘 작동합니다. 그것은 byte []를 XDocument 객체로 변환합니다. 이 방법이 옳은지 확실하지 않습니다. 왜 MemoryStream을 사용해야합니까? 바이트 []을 XDocument으로 변환하는 올바른 방법입니까? 아니면 다른 방법으로 변환 할 수 있습니까?
왜 당신은'NullRemover'를 전혀 필요로합니까? 이는 다른 것이 깨 졌음을 의미합니다. 데이터를 처음 0 바이트까지 가져 오는 것이 정말 행복한지 여부는 명확하지 않습니다. 그러나'MemoryStream'의 사용은 괜찮습니다. –
16 진수 값 0x00, "."오류가 발생합니다. 줄 51, 위치 12입니다. " 그래서 내가 이것을 사용하고 있습니다. –
하지만 이는 데이터를 전송할 때 문제가 있음을 나타냅니다. 즉, 서버에서 XML이 손상되었거나 데이터가 전송되지 않습니다. 어느 쪽이든, 해결책은 잘못된 데이터를 제거하는 것이 아니라 올바른 데이터를 시작하도록하는 것입니다. * 그 밖의 * 데이터에 어떤 오류가 있는지 전혀 알 수 없습니다. –