Como adicionar uma string XML existente em um XElement
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><result></result></results>
mas eu preciso esta ??p>
<results><result>...</result></results>
Todas as idéias?
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
.