내가 개체를 XML로 직렬화하고 문자열을 반환하는 방법이 있습니다.xmlserializer에 특정 이스케이프 문자를 추가하려면 어떻게해야합니까?
public static string SerializeType<T>(T item)
{
var serializer = new XmlSerializer(typeof(T));
var builder = new StringBuilder();
var settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
using (var stringWriter = XmlWriter.Create(builder, settings))
{
serializer.Serialize(stringWriter, item);
return builder.ToString();
}
}
그러나
, 그것이 내가 전달 객체의 문자열에서 모든 예약 된 문자를 제거되지 않습니다 마이크로 소프트가 나열 Reserved Characters &> <로 %. "abc & cd % d"문자열 필드가있는 항목을 입력하면 세미콜론 앞에 공백없이 "& lt; ab & gt; bc & amp; cd % d"가됩니다. %가 이스케이프되지 않습니다. 백분율에 올바른 이스케이프 시퀀스를 추가하려면 어떻게합니까? 클라이언트의 앱에 %를 보내면 오류가 발생합니다. 해당 페이지에 나열된 이스케이프로 문제가 해결됩니다.
이 문자를 추가해야하는 이유에 대한 정보를 추가했습니다. 클라이언트의 애플 리케이션이 변경 /이 결함을 제거해야하지만이 궁극적으로 내게 떨어질 것 같아요. 이 답변은 내 질문에 실제로 대답하지 않습니다. 시리얼 라이저가 아닌 경우 어떻게 처리 할 것인가? – Bishop
@ 비숍 : 클라이언트의 앱은 무엇입니까? 그리고 왜 그들은 그것을 고칠 수 없습니까? 당신이 정말로 필요하다면, 나중에 문자열에서'%'를 수동으로 대체 할 수는 있지만, 적어도 클라이언트가 완벽하게 좋은 XML을 거부하고 있음을 알리도록해야합니다. –
자바 서블릿입니다. 그들에게 알려주는 것은 주어진 것이었다. 그들은 방금 느린 변화를 보이고 이미 상당한 양의 백로이 있음을 입증했습니다. Jon의 도움에 감사드립니다. – Bishop