2016-09-26 4 views
0

형식을 사용하지 않고 (공백 문자, 줄 바꿈 등) XML에 linq을 사용하여 xml을 생성하고 파일에 저장하지 않고 메모리에 저장하는 방법이 있습니까?LINQ to XML xml 형식을 지정하지 않고 생성하는 방법

이 XML을 일부 api로 보냈습니다. 이는 필수 사항입니다. 지금 사용 중입니다. string.Replace();

var doc = new XDocument(
      new XDeclaration("1.0", "UTF-8", null), 
      new XElement("request", 
       new XAttribute("version", "1.0"), 
       new XElement("m", 
        new XElement("id", credentials.id), 
        new XElement("signature"), ""), 
       new XElement("data", 
        new XElement("p", 
         new XAttribute("id", ""), 
         new XElement("porp", 
          new XAttribute("name", "c"), 
          new XAttribute("value", c)), 
         new XElement("porp", 
          new XAttribute("name", "a"), 
          new XAttribute("value", a)))))); 


     var data = doc.Element("request").Element("data").Elements(); 
     string result = string.Concat(data).Trim().Replace("\r\n", "").Replace(" ", ""); 
     var signature = Utils.ComputeSignature(result, credentials.Password); 
     doc.Element("request").Element("m").Element("signature").Value = signature; 
     return doc.ToString().Trim().Replace("\r\n", "").Replace(" ", ""); 

감사합니다!

답변

1

이를 달성하기 위해 몇 가지 방법이 있지만 가장 쉬운 방법은 당신이 당신의 SaveOptions를 지정할 수있는 XNode.ToString의 오버로드를 사용하는 것입니다 : 당신의 COMENT에 대한

doc.ToString(SaveOptions.DisableFormatting); 
+0

들으을. 나는 그것을 반환 문서 전체에서 사용할 것이다. 하지만 거기에 그것을 연결하는 방법은 무엇입니까? –

+0

정확히 말하면, 요소의 시퀀스를 문자열 시퀀스 '... Elements(). Select (x => x.ToString (SaveOptions.DisableFormatting))'로 투영해야합니다. –

+0

@StasPetrov 기본'XNode' 클래스의 메소드이기 때문에,'string result = string.Concat (data.Select (e => e.ToString (SaveOptions.DisableFormatting)));' –