2009-07-24 5 views
1

나는 현재 XmlSerializer를를 사용하여 객체를 직렬화하고있어, 그 결과 XML로 시작 :Xml 직렬화에 사용되는 인코딩을 결정하는 요소는 무엇입니까?

<?xml version="1.0" encoding="utf-16"?> 

나는,이 특정 경우에 나는 (그것을 필요로하지 않기 때문에 나는거야 제거하고자하는 나중에 직렬화 된 문자열을 사용하여 나중에 자신의 코드로 deserialize 할 수 있으므로 나중에 필요할 때 다시 추가 할 수 있습니다.)

우리는 이러한 일련의 작업을 수행 할 것이므로 가능한 한 빨리이 작업을 수행하려고합니다.

질문 : 그렇다면이 서명을 항상 정확히 같게 할 수 있습니까? (예를 들어, 결과 문자열의 처음 39자를 제거한 다음 역 직렬화 할 때 똑같은 문자열을 다시 추가 할 수 있습니까?)

또는 인코딩을 다르게 할 수 있습니까?

감사

+0

다음 성능 병목 현상을 알려주는 성능 분석을 수행 했습니까? 내게는 당신의 시간 동안 더 유익한 용도가있을 것 같습니다. –

+0

아니요, 이것은 아마도 내 시간을 성과로 볼 때 유용하지 않습니다. 그러나, 하나는 내가 어떻게/왜이 특정 인코딩이 설정되어 어떻게 그것을 무시할 수 배울려고 노력하고있어. 또한이 XML의 출력 형식에 신경을 써야하며 성능 이외의 이유로 XML 서명이 필요하지 않습니다. –

답변

2

귀하의 질문에 대한 답변은 귀하가 우리에게 보여주지 않은 코드, 즉 일련 번호 작성 방법입니다. 당신은 아마도 StringWriter에 직렬화하거나 직접 StringBuilder에 직렬화했습니다. .NET의 문자열은 UTF-16입니다. 문자열로 직렬화하면 UTF-16 인코딩을받을 수 밖에 없습니다.

다른 경우 인코딩은 대상으로 지정됩니다. 일종의 TextWriter로 직렬화하면 재정의되지 않는 한 TextWriter의 인코딩이 사용됩니다. XmlWriter로 직렬화하면 XmlWriterSettings가 사용 된 인코딩을 결정합니다.

XML의 전문가가 아니라면 서명을 그대로 두는 것이 좋습니다. .NET XML API는 XML 규칙을 이해합니다. 당신이 그것들을 잘 이해하지 못한다면 전문가에게 맡기는 것이 좋습니다.

+0

고맙습니다. 그건 내가 알고 싶었던 것을 설명한다. 나는 그들을 내버려 둘 것이다 :-) –

0

아니, 당신은 (무엇보다도) 사용 된 수있는 다른 인코딩의 무수한 있기 때문에 XML 선언은 항상 동일하다고 가정 할 수 없다.

XML 문자열을 사용하기 전에 항상이 방법으로 XML 문자열을 변형하지 않는 것이 좋습니다.

+0

자, 이제 어떤 인코딩이 사용될 지 결정할 수 있습니까? 어떻게 든 강제 할 수 있습니까? 나는 그것을 지정하는 장소를 찾지 못했습니다. –

+0

나는 그 질문을 이해하지 못한다 - 당신은 언제 인코딩을 사용하고 있습니까? –

+0

인코딩을 사용하고 있지 않습니다. 내 질문은 : XML은 인코딩이 utf-16이라는 XML 서명과 함께 나온다. 이 특정 인코딩이 선택된 이유는 무엇입니까? 이 프레임 워크에서 하드 코딩 되었습니까? 그것을 바꿀 수 있습니까? 그것은 날씨 또는 호스트 컴퓨터의 OS 버전에 따라 좌우됩니까? –

0

정확히 최적화가 속도 향상으로 인한 것이라고 생각하십니까? 39자를 제거하고 문자열에 추가하는 것이 추가 39자를 직렬화하는 것보다 빠르다는 것이 확실합니까? (필자의 주장은 그렇지 않을 것이라고 생각합니다.)

+0

아, 아니, 39자를 제거하는 것은 속도 향상이 아닙니다. 결과 문자열을 더 작게 만들거나 제거하기 위해 제거하려고하지만 더 빨리 만들지는 않습니다. 속도 부분은이 시작 부분을 제거하기 위해 정규 표현식을 실행하는 것처럼이 실행을 느리게 만들지 않으려는 경우부터옵니다.방금 첫 번째 "n"문자를 제거하면 이미 동일한 StringBuilder에서 처리 할 수 ​​있습니다. 진실을 말하면, 정규 표현식을 사용하는 데 전혀 차이를 내지 않을 수도 있습니다. 아마도 나는 그것을 실제로 측정하지 않았습니다. –

+0

제가 주로 알고 싶은 것은 인코딩을 정의하는 것입니다. 그래서 그것을 고칠 수 있고 변경되지 않도록 할 수 있습니다. –

관련 문제