Visual CSharp .NET - Insertar nodo en archivo xml (error)

 
Vista:

Insertar nodo en archivo xml (error)

Publicado por Pablus (1 intervención) el 14/09/2019 18:04:02
Hola.

Tengo el típico archivo xml de música (catalog.xml) con la siguiente estructura:

<CATALOG>
<CD>...</CD>
<CD>...</CD>
...
</CATALOG>

Me he creado un webservice (lo llamo desde javascript) y un método Insert . Este método, además del xmlUrl, tendrá más parámetros como por ejemplo el objeto json con el CD que quiero insertar. De momento ese json lo he puesto directamente dentro del método para probar.

Lo que tiene el método es lo siguiente:

---------------------------------------------
[WebMethod]
public string Insert(string xmlUrl)
{
Uri urlWebsite = new Uri(xmlUrl);
string RelativePath = urlWebsite.AbsolutePath;

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlUrl);

XmlNode root = xmlDoc.DocumentElement;

string strJson = "{\r\n \"CD\": {\r\n \"TITLE\": \"Still got the blues\",\r\n \"ARTIST\": \"Gary Moore\",\r\n \"COUNTRY\": \"UK\",\r\n \"COMPANY\": \"Virgin records\",\r\n \"PRICE\": \"10.20\",\r\n \"YEAR\": \"1990\"\r\n }\r\n}";

XmlNode node = JsonConvert.DeserializeXmlNode(strJson)

foreach(XmlNode n in node)
root.InsertAfter(n, root.FirstChild);

...

}

---------------------------------------------

- Cuando ejecuto el código me da un error en la línea del root.InsertAfter(n, root.FirstChild);

"El nodo que desea insertar pertenece a otro contexto de documento."

- Antes había probado a poner directamente el node (sin iterar):

root.InsertAfter(node, root.FirstChild);

...pero me daba este error:

"No se puede insertar el nodo especificado como elemento secundario v&#225;lido de este nodo, porque el nodo especificado es incorrecto."

La verdad es que tengo un poco de lío. No sé si lo que tengo que insertar tiene que ser un XmlNode, un XmlElement, etc. Si alguien pudiera echarme una mano y explicarme un poco qué estoy haciendo mal se lo agradecería.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder