xdocument tutorial trabajar query net leer example ejemplos con c# asp.net .net linq linq-to-xml

c# - tutorial - Esta operación crearía un documento estructurado incorrectamente.



xdocument c# example (3)

Soy nuevo en XML y probé lo siguiente, pero obtengo una excepción. ¿Alguien me puede ayudar?

La excepción es This operation would create an incorrectly structured document

Mi código:

string strPath = Server.MapPath("sample.xml"); XDocument doc; if (!System.IO.File.Exists(strPath)) { doc = new XDocument( new XElement("Employees", new XElement("Employee", new XAttribute("id", 1), new XElement("EmpName", "XYZ"))), new XElement("Departments", new XElement("Department", new XAttribute("id", 1), new XElement("DeptName", "CS")))); doc.Save(strPath); }


El documento Xml debe tener un solo elemento raíz. Pero está intentando agregar nodos de Departments y Employees en el nivel raíz. Agrega un nodo raíz para arreglar esto:

doc = new XDocument( new XElement("RootName", new XElement("Employees", new XElement("Employee", new XAttribute("id", 1), new XElement("EmpName", "XYZ"))), new XElement("Departments", new XElement("Department", new XAttribute("id", 1), new XElement("DeptName", "CS")))) );


En mi caso, estaba intentando agregar más de un XElement a xDocument que arrojó esta excepción. Consulte a continuación mi código correcto que solucionó mi problema

string distributorInfo = string.Empty; XDocument distributors = new XDocument(); XElement rootElement = new XElement("Distributors"); XElement distributor = null; XAttribute id = null; distributor = new XElement("Distributor"); id = new XAttribute("Id", "12345678"); distributor.Add(id); rootElement.Add(distributor); distributor = new XElement("Distributor"); id = new XAttribute("Id", "22222222"); distributor.Add(id); rootElement.Add(distributor); distributors.Add(rootElement); distributorInfo = distributors.ToString();

Por favor vea abajo para lo que obtengo en Distribuidor.

<Distributors> <Distributor Id="12345678" /> <Distributor Id="22222222" /> </Distributors>


Es necesario agregar elemento raíz.

doc = new XDocument(new XElement("Document")); doc.Root.Add( new XElement("Employees", new XElement("Employee", new XAttribute("id", 1), new XElement("EmpName", "XYZ")), new XElement("Departments", new XElement("Department", new XAttribute("id", 1), new XElement("DeptName", "CS")))));