2013-07-22 4 views
4

내 속성입니다 :XML serializer가 내 XmlAttribute에 문자를 추가하는 이유는 무엇입니까? 여기

/// <summary> 
    /// The Business Unit 
    /// </summary> 
    [XmlAttribute("ows_Business_x0020_Unit")] 
    public string BusinessUnit { get; set; } 

내가 얻을 BusinessUnit의 한 객체 직렬화를 호출

ows_Business_x005F_x0020_Unit=\"Hi\" 

어디에서 온 _x005F는 무엇입니까?

+1

밑줄을 인코딩합니다. 왜 내가 모르는 다른 사람들에게 그것을하지 않는 이유. –

+1

관련 : http://stackoverflow.com/questions/14944456/how-to-preserve-spaces – SwDevMan81

답변

3

이스케이프 시퀀스입니다. _x0020은 실제로 공간을위한 또 다른 이스케이프 시퀀스이므로 이스케이프 시퀀스를 이스케이프 처리하므로 문자 그대로 이스케이프 시퀀스가 ​​필요하며 혼선 이스케이프 값은 필요하지 않습니다. 그래서 당신의 속성은 다음과 같아야합니다 ows_Business_x0020_Unit로 속성을 직렬화합니다

public class MyClass 
{ 
    [XmlAttribute("ows_Business Unit")] 
    public string BusinessUnit { get; set; } 
} 

합니다.

1

Microsoft는 특정 문자를 _xZZZ_로 인코딩하므로 _xZZZ_와 비슷한 이름은 이스케이프 처리됩니다. 그들은 "_x"를 검색하고 밑줄을 _x005F로 인코딩하여이를 처리하기로 선택했습니다.

당신의 이름에 "_x"를 포함시키지 않으면 더 쉽게 생활 할 수 있습니다.

+0

불행히도, 나는 옵션이 아니기 때문에 외부 웹 서비스를 호출하고 있습니다. 설명 주셔서 감사 :-) –

관련 문제