2012-03-17 2 views
0

XML 파일을 만드는 C# (ASP.NET 환경에서)을 사용하여 프로그램을 만들고 있습니다. XmlWriter 클래스를 사용하여 글쓰기를하지만, 어떻게해야할지 모르겠습니다.C#의 XmlWriter 클래스를 사용하여 XML 파일에 빈 문자열을 쓰는 방법은 무엇입니까?

xmlWriter.WriteElementString("c1", "name"); 

된다 :

말, 내가 할 문자열을 작성하는

< C1> 이름 </C1> I 시도 할 때까지, 대단한

빈 문자열을 쓰려면

xmlWriter.WriteElementString("c1", ""); 
가된다

:

< C1 />

하지만 어떻게 당신이되고 포맷합니까?

< C1> </C1>

+2

가능한 중복 [C 번호 :? XmlTextWriter.WriteElementString가 빈 문자열에 실패 (http://stackoverflow.com/questions/1176202/c-xmltextwriter-writeelementstring-fails-on-empty-strings) – nemesv

+0

예 , 그것은 중복이며 그 링크가 내 질문에 답합니다. 고맙습니다. – ahmd0

+0

나는 그것을 되 찾는다. 실제로 그것을 고치는 것은 아닙니다. 나는 아직도 닫는 꼬리표를 사용하도록 강요 할 수 없다. ... 누군가가 이유를 알고 있다면 회신해라. ... – ahmd0

답변

1

두 구문 (<c1/><c1></c1>)은 XML 관점에서 보면 동일하므로 호환되는 독자는 사용자를 구분할 수 없게 될 가능성이 큽니다. 특별한 "null"값이 필요하면 이것을 위해 설계된 xsi : nil (http://w3.org/TR/xmlschema-1/#xsi_nil)을 사용하는 것이 좋습니다.

<c1 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 
1

<c1/> 빈 요소 적당하다. 새 라인에 대해 <br/>을 html로 사용하는 것과 같습니다.

올바른 구문 일지라도 />을 포함하는 모든 태그를 수동으로 구문 분석하여 <></>으로 수동으로 분류 할 수 있습니다. 그렇지 않으면 아마도 xmlWriter.WriteElementString ("c1", "");

+0

예, 나는 그것을 안다. 내 목적을 위해 두 사람이 차이를 만듭니다. < c1/ >은 null로 처리되고 < c1 > - 빈 문자열로 처리됩니다. – ahmd0

+1

@ ahmd0 두 가지 구조는 XML 관점에서 동일하므로 준수하는 독자가 두 가지 개념을 구별하지 못하게 할 가능성이 큽니다. 특별한 "null"값이 필요하면이를 위해 설계된 xsi : nil (http://www.w3.org/TR/xmlschema-1/#xsi_nil)을 사용하는 것이 좋습니다. –

+0

@Alexei Levenkov 왜 당신은 별도의 답변으로 게시하지 마십시오. 이것은 무슨 일이 일어나는 것 같습니다 - 내 질문에 대한 대답은 '아니오'라고 대답 할 수 없습니다. 그리고 나는 그것을 표시 할 것이다. – ahmd0

3
using (XmlWriter writer = new XmlTextWriter(stream) 
{ 
    writer.WriteStartElement("c1") 
    writer.WriteString("") 
    writer.WriteFullEndElement() 
} 

편집 : 테스트 할 수있는 코드입니다. XmlWriter를 만드는 방법은 중요하지 않습니다.

public static void Main() 
{ 
    using (StringWriter sw = new StringWriter()) 
    { 
     using (XmlWriter xw = XmlWriter.Create(sw)) 
     { 
      xw.WriteStartElement("c1"); 
      xw.WriteString(string.Empty); 
      xw.WriteFullEndElement(); 
     } 

     Console.Write(sw.ToString()); // Prints <c1></c1> 
    } 
} 

사용중인 XmlWriter의 구현은 무엇입니까?

+0

XmlTextWriter 또는 XmlWriter가되어야합니까? 때문에 jusr XmlWriter 함께 작동하도록 만들 수 없습니다 ... – ahmd0

+0

XmlWriter는 추상 클래스입니다. XmlWriter의 어떤 구현을 사용하고 있습니까? 'using (XmlWriter writer = XmlWriter.Create (stream))'을 사용할 수도 있습니다. 나는 당신이 어떤 작가를 사용하고 있는지가 중요하다고 생각하지 않습니다. 포커스는 시작 요소와 완전 끝 요소를 명시 적으로 작성해야합니다. – Tung

+0

그래, 그게 내가 사용하는거야,하지만 여전히 그 닫는 태그를 추가하지 않습니다 ... – ahmd0

관련 문제