C\#XML 문자열 은 특수 문자 의 처리 변환 방법 소결 을 포함 합 니 다.

XML 형식의 내용 을 정상적으로 출력 하기 위해 서 는 XML 이 허용 하지 않 는 특수 문자 들 을 변환 해 야 합 니 다.본 고 는 C\#XML 문자열 에 특수 문자 가 포함 되 어 있 는 지 판단 하고 변환 하 는 방법 을 소개 한다.
다음은 몇 개의 특수 문자 의 대응 실체 입 니 다.
<

작은 번호
>

번호 보다 크다
&
&
화해시키다
'
'
작은 따옴표
"
"
작은 따옴표
C\#에서 C\#가 제공 하 는 방법 을 직접 호출 하고 저장 하면 자동 으로 특수 문 자 를 대응 하 는 실체 로 변환 합 니 다.
string s =System.Security.SecurityElement.Escape(s);
혹은
내용 을중,예 를 들 면,CDATA 의 내용 은 XmlDocument 분석 시 자동 으로 무 시 됩 니 다.
만약 많은 지역 에 특수 한 내용 이 있다 면 아래 의 코드 를 참고 하여 함 수 를 통 해 교 체 를 실현 할 수 있다.
사실 매우 간단 합 니 다.아래 의 이 함수 만 사용 하면 XML 문자열 의 특수 문 자 를 판단 하고 변환 할 수 있 습 니 다.

핵심 코드

/// <summary>
/// Turns a string into a properly XML Encoded string.
/// Uses simple string replacement.
/// 
/// Also see XmlUtils.XmlString() which uses XElement
/// to handle additional extended characters.
/// </summary>
/// <param name="text">Plain text to convert to XML Encoded string</param>
/// <param name="isAttribute">
/// If true encodes single and double quotes, CRLF and tabs.
/// When embedding element values quotes don't need to be encoded.
/// When embedding attributes quotes need to be encoded.
/// </param>
/// <returns>XML encoded string</returns>
/// <exception cref="InvalidOperationException">Invalid character in XML string</exception>
public static string XmlString(string text, bool isAttribute = false)
{
 var sb = new StringBuilder(text.Length);

 foreach (var chr in text)
 {
  if (chr == '<')
   sb.Append("&lt;");
  else if (chr == '>')
   sb.Append("&gt;");
  else if (chr == '&')
   sb.Append("&amp;");

  // special handling for quotes
  else if (isAttribute && chr == '\"')
   sb.Append("&quot;");
  else if (isAttribute && chr == '\'')
   sb.Append("&apos;");

  // Legal sub-chr32 characters
  else if (chr == '
') sb.Append(isAttribute ? "&#xA;" : "
"); else if (chr == '\r') sb.Append(isAttribute ? "&#xD;" : "\r"); else if (chr == '\t') sb.Append(isAttribute ? "&#x9;" : "\t"); else { if (chr < 32) throw new InvalidOperationException("Invalid character in Xml String. Chr " + Convert.ToInt16(chr) + " is illegal."); sb.Append(chr); } } return sb.ToString(); }
XML 에서 특수 문자 로 보 이 는 문 자 는 많 지 않 습 니 다.세 개 만 있 습 니 다.<,&,>이 므 로 이 세 글자 만 바 꾸 면 됩 니 다.작은 따옴표 와 줄 바 꿈 자 를 바 꿀 수도 있 고 바 꾸 지 않 아 도 됩 니 다.
사용 방법:
1.우선 네 임 스페이스 System.Text 를 가 져 옵 니 다.StringBuilder 방법 을 써 야 하기 때 문 입 니 다.
2.문자열 을 판단 하고 변환 할 때 함수 XmlString()을 직접 사용 합 니 다.예 를 들 어:
string sText = XmlString(sText);
작은 따옴표 와 줄 바 꿈 자 를 출력 하려 면 이 몇 개의 문 자 를 바 꾸 려 면 함 수 를 이렇게 사용 해 야 합 니 다.
string sText = XmlString(sText, true);
총결산
상기 방법 을 사용 하여 웹 페이지 에 XML 형식 문자열 을 출력 하거나 사용 가능 한 XML 파일 을 만 들 면 더 이상 문제 가 없 을 것 입 니 다.

좋은 웹페이지 즐겨찾기