찾는 방법과 Visual C# .NET을 사용하여 XML 파일에 특수 문자 바꾸기

기술 자료 번역 기술 자료 번역
기술 자료: 316063 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Visual C# .NET을 사용하여 특수 문자를 확장 태그 언어 (XML) 파일로 바꾸는 방법을 설명합니다.

이 기법에 대한 설명

XML 태그 언어 일부로 해석되는 특수 문자 다음 다섯 가지 엔터티 참조를 미리 정의합니다.

Character Name Entity Reference Character Reference Numeric Reference
Ampersand & & &
Left angle bracket &lt; < &#38;#60;
Right angle bracket &gt; > &#62;
Straight quotation mark &quot; " &#39;
Apostrophe &apos; ' &#34;


왼쪽된 꺽쇠 괄호, 앰퍼샌드, 및 기타 구분 기호는 이스케이프 문자 및 엔터티 참조를 사용할 수 있습니다. 숫자 문자 참조는 사용할 수도 있습니다. 인식된 즉시 때 숫자 문자 참조는 확장됩니다. 또한 숫자 문자 참조는 문자 데이터로 처리되기 때문에 숫자 문자 참조는 사용할 수 있습니다.

다음 두 엔터티를 선언하는 경우:
  • <
  • &
대체 텍스트가 이스케이프됩니다 중인 해당 문자 (왼쪽된 꺽쇠 괄호 또는 앰퍼샌드) 문자를 참조인 내부 엔터티로 선언해야 합니다. 이에 대한 참조를 올바른 형식의 결과를 생성할 수 있도록 이 이중 이스케이프를 이러한 엔터티가 필요합니다.

다음 세 가지 엔터티를 선언하는 경우:
  • >
  • '
  • "
내부 엔터티 대체 텍스트가 이스케이프됩니다 중인 단일 문자입니다 로 선언해야 합니다.

특수 문자를 대체해야 하는 여부를 결정하십시오.

필요하지 않음: 데이터베이스에서 데이터를 검색할 XML 파일

Microsoft .NET Framework를 사용하면 데이터가 검색되고 DataSet 개체에 저장됩니다. 데이터를 DataSet 에서 XML 파일을 WriteXml 메서드를 사용하여 작성할 때 "요약" 절에서 참조되는 특수 문자는 해당 문자 참조는 사용하여 바뀝니다. 따라서 XML 파일을 쓸 때 및 데이터 집합 을 사용하는 경우 특별한 대체 프로세스가 필요합니다.

필수: 타사 XML 데이터를 특수 문자 포함하는 XML 파일

경우에 따라 XML 파일 또는 타사에서 제공되는 XML 데이터를 이러한 특수 문자를 사용할 수 있습니다. 이 시나리오에서는 XmlDocument 개체 또는 XmlReader 개체의 데이터를 로드할 때 데이터 오류가 생성됩니다.

앰퍼샌드 문자가 발견될 때 다음 오류 메시지가 나타날 수 있습니다.
동안 entity_name 구문 분석, 오류가 발생한 줄 #, # 놓습니다.
여기서 # 줄 및 # 나타냅니다 특수 문자의 정확한 위치를 놓습니다.

왼쪽된 꺽쇠 괄호 발견될 때 다음 오류 메시지가 나타날 수 있습니다.
해당 ' < ' 문자, 16진수 값 0x3C, 이름에 포함할 수 없습니다. 선#, position #.
이 오류 메시지의 줄 # 및 위치를 # 위치의 위치가 왼쪽된 꺽쇠 괄호 있지만 두 번째 왼쪽된 꺽쇠 괄호 발생한 나타내지 않습니다.

오른쪽 꺾쇠 괄호 (>), 곧은 따옴표 ("), 또는 아포스트로피 (')를 XML 파일에 포함된 경우,이러한 문자를 단일 문자 대체 필요하므로 XmlReaderXmlDocument 개체에 이러한 개체가 처리합니다.

특수 문자 바꾸기

앰퍼샌드 및 왼쪽된 꺾쇠괄호 문자 바꿀 수 있습니다:
  1. XML 파일을 만듭니다.
  2. Visual C# .NET 응용 프로그램을 만들고 코드를 삽입하십시오.

XML 파일 만들기

복사 및 다음 코드를 메모장에 붙여 넣습니다. 다음 Customers.xml 같이 저장합니다:
<?xml version="1.0" standalone="yes"?>
<Customers>
<Customer>
<CustomerID>BLAUS</CustomerID>
<CompanyName>Blauer See Delikatessen</CompanyName>
<ContactName>Hanna Moos</ContactName>
<Region>test<ing</Region>
</Customer>
<Customer>
<CustomerID>SPLIR</CustomerID>
<CompanyName>Split Rail Beer & Ale</CompanyName>
<ContactName>Art raunschweiger</ContactName>
<Region>WY</Region>
</Customer>
</Customers>
				

Visual C# .NET 프로젝트 만들기

  1. 새 Visual C# .NET Windows 응용 프로그램을 같이 만듭니다.
    1. Microsoft Visual Studio .NET 시작하십시오.
    2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트 를 클릭하십시오.
    3. 새 프로젝트 대화 상자의 프로젝트 형식Visual C# 프로젝트 클릭한 다음 템플릿 에서 Windows 응용 프로그램 을 누릅니다.
  2. 도구 상자에서 TextBox 컨트롤을, 두 개의 단추 컨트롤 및 DataGrid 컨트롤을 기본 폼에, Form1.cs 끕니다.
  3. TextBoxMultiline 속성을 True 로 설정하십시오.
  4. 다음 네임스페이스 가져오기:
    using System.Xml;
    using System.IO;
    using System.Data.SqlClient;
    					
  5. 다음 코드를 Main 함수에 후 추가:
    string filepath = "C:\\Customers.xml";
    private void ReplaceSpecialChars(long linenumber)
            {
                System.IO.StreamReader strm;
                string strline;
                string strreplace = " ";
                string tempfile = "C:\\Temp.xml";
                try
                {
                    System.IO.File.Copy(filepath,tempfile,true);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    
                StreamWriter strmwriter = new StreamWriter(filepath);
                strmwriter.AutoFlush = true;
                strm = new StreamReader(tempfile);
                long i  = 0;
                while (i < linenumber - 1)
                {
                    strline = strm.ReadLine();
                    strmwriter.WriteLine(strline);
                    i = i + 1;
                }
    
                strline = strm.ReadLine();
                Int32 lineposition;
    		
                lineposition = strline.IndexOf("&");
                if (lineposition > 0) 
                {
                    strreplace = "&amp;";
                }
                else
                {
                    lineposition = strline.IndexOf("<",1);
                    if (lineposition > 0 )
                    {
                        strreplace = "<";
                    }
    
                }
                strline = strline.Substring(0, lineposition - 1) + strreplace + strline.Substring(lineposition + 1);
                strmwriter.WriteLine(strline);
    
                strline = strm.ReadToEnd();
                strmwriter.WriteLine(strline);
    
                strm.Close();
                strm = null;
    
                strmwriter.Flush();
                strmwriter.Close();
                strmwriter = null;
    
            }
    		
            public XmlDocument LoadXMLDoc() 
            {
            XmlDocument xdoc;
            long lnum;
    		
            try
            {
                xdoc = new XmlDocument();
                xdoc.Load(filepath);
            }
            catch (XmlException ex)
            {
                MessageBox.Show(ex.Message);
                lnum = ex.LineNumber;
                ReplaceSpecialChars(lnum);
    
                xdoc = LoadXMLDoc();
            }
        return (xdoc);
        }
    					
  6. Button1_Click 이벤트에 다음 코드를 추가합니다:
    XmlDocument xmldoc = new XmlDocument();
            xmldoc = LoadXMLDoc();
            XmlNode nextnode; 
            nextnode = xmldoc.FirstChild.NextSibling;
            this.textBox1.Text = nextnode.OuterXml.ToString();
    					
  7. Button2_Click 이벤트에 다음 코드를 추가합니다:
    DataSet ds = new DataSet();
                XmlDocument xdoc = new XmlDocument();
                SqlConnection cnNwind = new SqlConnection("Data source=myServerName;user id=myUser;Password=myPassword;Initial catalog=Northwind;");
                SqlDataAdapter daCustomers = new SqlDataAdapter("Select customerid,companyname,contactname, region from customers where region='WY'", cnNwind);
                string filepath = "C:\\Customers.xml";
                try
                {
                    daCustomers.Fill(ds, "Customers");
                    this.dataGrid1.DataSource = ds.Tables["Customers"];
                    ds.WriteXml(filepath);
                    xdoc.Load(filepath);
                    XmlNode nextnode; 
                    nextnode = xdoc.FirstChild.NextSibling;
                    textBox1.Text = nextnode.OuterXml.ToString();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    					
  8. SqlConnection 연결 문자열에 사용자 환경의 필요에 따라 속성을 변경하십시오.
  9. 빌드 및 프로젝트를 실행하십시오.
  10. Button1 을 클릭하십시오.

    받은 오류 설명되어 있는 오류 설명으로 일관성이 있는 Required: An XML file with special characters 구역. 앰퍼샌드 교체되는, XML 데이터를 TextBox 에 표시됩니다.
  11. Button2 를 클릭하십시오.

    DataGrid 의 알 수 companyname 앰퍼샌드 가지며 TextBox 함께 XML 데이터를 표시하는

참조

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
251354찾고 Visual Basic XML 문서에서 특수 문자를 바꾸는 방법

속성

기술 자료: 316063 - 마지막 검토: 2007년 3월 29일 목요일 - 수정: 4.4
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
키워드:?
kbmt kbgrpdsmsxml kbhowtomaster kbmsxml KB316063 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com