2011-09-20 7 views
0

Stringbuilder를 사용하여 일부 XML 태그를 작성했습니다. 이 Stringbuilder 문자열을 C#을 사용하여 XML 형식의 문자열로 변환하려고합니다. 아래에서는 입력 문자열과 예상 출력 문자열을 지정했습니다.문자열을 C#의 xml로 변환하십시오.

EX는 :

Input: 
     <Configuration Id="5020244c-42c4-4a3c-af16-806d8948c7fd" Name="ACTDrawing" Landscape="True" PaperKind="A3" IsNewConfiguration="true"><Worksheets><WorkSheet Name="OVERVIEW" Zoom="100" Lock="False" Default="True"> <Page Id="7eba0912-51bf-4ffe-ac65-6ac495fa5af6" Number="1" Lock="False"></WorkSheet></Worksheets></Configuration> 

Expected Output: 
     <Configuration Id=\"5020244c-42c4-4a3c-af16-806d8948c7fd\" Name=\"ACTDrawing\" Landscape=\"True\" PaperKind=\"A3\" IsNewConfiguration=\"true\"><Worksheets><WorkSheet Name=\"OVERVIEW\" Zoom=\"100\" Lock=\"False\" Default=\"True\"><Page Id=\"7eba0912-51bf-4ffe-ac65-6ac495fa5af6\" Number=\"1\" Lock=\"False\"></WorkSheet></Worksheets></Configuration> 

나는이 변환 코드를 했어요.

예 : 내가 서식 "_ACTGraphicalXMLDoc.OuterXml"를 사용하지 않으려는이 예에서

StringBuilder ACTConfigXML = new StringBuilder(); 
ACTConfigXML.Append("<Configuration Id=\""); 
ACTConfigXML.Append(System.Guid.NewGuid()); 
ACTConfigXML.Append("\" Name=\"ACTDrawing\" " + 
    "Landscape=\"True\" PaperKind=\"A3\" " + 
    "IsNewConfiguration=\"true\">"); 
ACTConfigXML.Append("<Worksheets>"); 
ACTConfigXML.Append("<WorkSheet Name=\""); 
ACTConfigXML.Append(_WorkSheetName.ToString()); 
ACTConfigXML.Append("\" Zoom=\"100\" Lock=\"False\" Default=\"False\">"); 
ACTConfigXML.Append("</WorkSheet>"); 
ACTConfigXML.Append("</Worksheets></Configuration>"); 

XmlDocument _ACTGraphicalXMLDoc = new XmlDocument(); 
_ACTGraphicalXMLDoc.LoadXml(ACTConfigXML.ToString()); 
ACTConfigXML = new StringBuilder(); 
ACTConfigXML.Append(_ACTGraphicalXMLDoc.OuterXml); 
string configXML = ACTConfigXML.ToString(); 

. "ACTConfigXML"데이터를 예상 형식으로 변환하고 싶습니다.

답변

0

입력 사항 인 경우 XML 파일로 저장하십시오. XML에서 이스케이프 된 큰 따옴표가 필요하지 않습니다 (프로그램에 리터럴을 넣는 경우에만 필요합니다). 귀하의 질문은 귀하가 시도한 것을 설명하지 않으며 최종 목표를 다루지도 않습니다. 당신이 게시 한 것과

0

, 그것은하려면 string.replace처럼 보이는() 당신은 을 XmlDocument

0

트릭을 할 수 있습니다 문자열로 된 문서. "_WorkSheetName.ToString()"에 XML을 깨뜨릴 내용 (예 : "/> ...")이 포함 된 경우 XML 오류가 발생합니다. 문자열 또는 디스크 파일에서 템플릿 XML 문서를 만들고 DOM에로드하십시오. XmlDomDocument.loadXML을 사용하여 필요한 값/특성을 업데이트하십시오 (예 :

).
string strXML = @" 
<Configuration id='to be replaced' Landscape='True' PaperKind='A3' IsNewConfiguration='true'> 
    <Worksheets> 
     <Worksheet Name='to be replaced' Zoom='100' Lock='False' Default='False'/> 
    </Worksheets> 
</Configuration>"; 

XmlDocument xml = new XmlDocument(); 
xml.LoadXml(strXML); 
XmlElement ndElement = xml.DocumentElement; 
ndElement.SetAttribute("id", System.Guid.NewGuid().ToString()); 

XmlElement ndWorksheet = (XmlElement)xml.SelectSingleNode("/Configuration/Worksheets/Worksheet"); 
if(ndWorksheet != null) { 
    ndWorksheet.SetAttribute("Name", "Safe worksheet name <>'\"/>"); 
} 

xml.Save(Response.OutputStream); 
0

그것은 거의 구축하는 것이 좋습니다 없다하여 문자열을 절약 할 수

output = input.replace("{", "\""); 
output = output.replace("\"", "\\\""); 
관련 문제