Estoy buscando la forma más sencilla de convertir una cadena que contiene XML válido en un objeto XmlElement
en C#.Necesito convertir una cadena XML en un XmlElement
¿Cómo se puede convertir esto en XmlElement
?
<item><name>wrench</name></item>
Estoy buscando la forma más sencilla de convertir una cadena que contiene XML válido en un objeto XmlElement
en C#.Necesito convertir una cadena XML en un XmlElement
¿Cómo se puede convertir esto en XmlElement
?
<item><name>wrench</name></item>
Utilice esta:
private static XmlElement GetElement(string xml)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
return doc.DocumentElement;
}
Cuidado !! Si necesita agregar este elemento a otro documento primero, debe Importarlo usando ImportNode
.
¿Esto no funciona si no hay una etiqueta Xml version bla bla> al principio? Si solo tiene un fragmento xml, no creo que funcione ... –
@Jimmy Hoffa: IIRC LoadXml toma cualquier fragmento XML bien formado que contenga exactamente un elemento XML en el nivel superior. ' xml' al principio no es obligatorio. – dtb
Sí, funcionará, pruébelo usted mismo. – Aliostad
Uso XmlDocument.LoadXml:
XmlDocument doc = new XmlDocument();
doc.LoadXml("<item><name>wrench</name></item>");
XmlElement root = doc.DocumentElement;
(O en caso de que estas hablando XElement, utilice XDocument.Parse :)
XDocument doc = XDocument.Parse("<item><name>wrench</name></item>");
XElement root = doc.Root;
Él quería el elemento, y para XElement solo puede hacer XElement.Parse (xmlString), pero le está dando un documento no elemento. –
@Jimmy Hoffa: si tiene un documento, es fácil obtener el elemento raíz, ¿no? – dtb
Claro, solo estaba diciendo que su respuesta podría adaptarse a la pregunta de los carteles un poco más en caso de que no sea tan fácil para él como lo es para nosotros ... –
Puede usar XmlDocument.LoadXml() para hacer esto.
Aquí es una examle simple:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("YOUR XML STRING");
Gracias por su respuesta. – Dean
he intentado con este fragmento, consiguió la solución.
// Sample string in the XML format
String s = "<Result> No Records found !<Result/>";
// Create the instance of XmlDocument
XmlDocument doc = new XmlDocument();
// Loads the XML from the string
doc.LoadXml(s);
// Returns the XMLElement of the loaded XML String
XmlElement xe = doc.DocumentElement;
// Print the xe
Console.out.println("Result :" + xe);
Si hay alguna otra forma mejor/más eficiente para implementar la misma, por favor háganos saber.
Gracias Saludos &
Supongamos que ya tenía un XmlDocument con nodos hijos, y hay que añadir más elemento secundario de cadena.
XmlDocument xmlDoc = new XmlDocument();
// Add some child nodes manipulation in earlier
// ..
// Add more child nodes to existing XmlDocument from xml string
string strXml =
@"<item><name>wrench</name></item>
<item><name>screwdriver</name></item>";
XmlDocumentFragment xmlDocFragment = xmlDoc.CreateDocumentFragment();
xmlDocFragment.InnerXml = strXml;
xmlDoc.SelectSingleNode("root").AppendChild(xmlDocFragment);
El resultado:
<root>
<item><name>this is earlier manipulation</name>
<item><name>wrench</name></item>
<item><name>screwdriver</name>
</root>
'' XmlElement' o XElement'? – SLaks
¿La cadena tiene un único elemento raíz? – SLaks
No tiene necesariamente un elemento raíz. – Dean