Pergunta

Como adicionar uma string XML existente em um XElement?

Este código

        var doc = new XDocument(
            new XElement("results", "<result>...</result>")
        );

é claro produz este

  <results>&lt;result&gt;&lt;/result&gt;</results>

mas eu preciso esta

  <results><result>...</result></results>

Todas as idéias?

Foi útil?

Solução

Isso deve funcionar:

var xmlString = "<result>sometext</result>";
var xDoc = new XDocument(new XElement("results", XElement.Parse(xmlString)));

Outras dicas

A resposta por Sani Singh Huttunen me colocou no caminho certo, mas só permite que um Resultado no Resultados elemento.

var xmlString = "<result>sometext</result><result>alsotext</result>";

falha com o System.Xml.XmlException

Existem vários elementos raiz.

Eu resolvi isso movendo as Resultados elemento para a string literal

var xmlString = "<results><result>sometext</result><result>alsotext</result></results>";

para que ele teve apenas um elemento raiz e, em seguida, acrescentou a seqüência analisada diretamente para o elemento pai, como este:

parent.Add(XElement.Parse(xmlString));

Veja a minha resposta sobre Existe um equivalente XElement para XmlWriter.WriteRaw?

Essencialmente, substituir um espaço reservado para o conteúdo somente se você souber já é XML válido .

var d = new XElement(root, XML_PLACEHOLDER);
var s = d.ToString().Replace(XML_PLACEHOLDER, child);

Este método também pode ser mais rápido do que analisá-lo com XElement.Parse.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top