Hola, tengo el siguiente problema, estoy generando un documento xml en base a un esquema que me entregaron con xmldocument, y algunos atributos estan definidos como nillable, por lo cual solamente insertaba un xsi:nil="true", hasta ahí todo bien en otros proyectos anteriores, pero en el de ahora es diferente.. además de existir este atributo, tambien hay otros atributos que se deben completar debido a que son requeridos, son booleanos, por lo que no hay problema, solo agrego un si o un no.
el problema es cuando existen más elementos o nodos.
Aquí les muestro un fragmento del xml en cuestión.
...
...
<CodCarrera>7444</CodCarrera>
<Anio>2006</Anio>
<PSU Requisito="Si">
<Exige_Puntaje_Minimo Puntaje_Minimo="No" />
<Prueba_Obligatoria_Lenguaje Ponderacion="20">No</Prueba_Obligatoria_Lenguaje>
<Prueba_Obligatoria_Matematicas Ponderacion="25">No</Prueba_Obligatoria_Matematicas>
<Prueba_Optativa_Ciencias_Sociales Ponderacion="30">No</Prueba_Optativa_Ciencias_Sociales>
<Prueba_Optativa_Ciencias Ponderacion="0">No</Prueba_Optativa_Ciencias>
<NEM Ponderacion="25">No</NEM>
<Entrevista_Personal Ponderacion="0">No</Entrevista_Personal>
<Entrevista_Psicologica Ponderacion="0">No</Entrevista_Psicologica>
<Test_Psicologico Ponderacion="0" Valor="0" Valor_Expresado="$">No</Test_Psicologico>
<Prueba_Especial Ponderacion="0" Valor="0" Valor_Expresado="$">No</Prueba_Especial>
<Examen_Admicion Ponderacion="0">No</Examen_Admicion>
<Requiere_Experiencia_Laboral Observacion="No" xsi:nil="true" />
</PSU>
...
...
Si se dan cuenta, el nodo "Exige_Puntaje_Minimo" no lleva xsi:nil="true", pero sin embargo esta definido en el esquema y cuando lo agrego, me he dado cuenta que solo lo agrega en el último nodo...
En el comienzo del xml declaro esto para utilizarlo más abajo.
Dim nilAttribute As XmlAttribute = xmlDocCarr.CreateAttribute("xsi", "nil", "http://www.w3.org/2001/XMLSchema-instance")
nilAttribute.Value = "true"
entonces cuando encuentro que un valor no contiene datos lo agrego
...
nodo3 = xmlDocCarr.CreateElement("Exige_Puntaje_Minimo")
'Atributo Puntaje_Minimo Si/No
nodo3.Attributes.Append(xmlDocCarr.CreateAttribute("Puntaje_Minimo"))
If Not (.Rows(i).Item("puntMinimo") Is DBNull.Value) Then
If (.Rows(i).Item("puntMinimo") = 1) Then
nodo3.Attributes("Puntaje_Minimo").Value = "Si"
If Not (.Rows(i).Item("puntMinimo") Is DBNull.Value) Then
nodo3.InnerText = .Rows(i).Item("puntMinimo")
Else
nodo3.Attributes.Append(nilAttribute)
nodo2.AppendChild(nodo3)
End If
Else
nodo3.Attributes.Append(nilAttribute)
nodo3.Attributes("Puntaje_Minimo").Value = "No"
End If
Else
nodo3.Attributes.Append(nilAttribute)
nodo3.Attributes("Puntaje_Minimo").Value = "No"
End If
nodo2.AppendChild(nodo3)
...
Alguna idea o sugerencia? o lo estoy apilcando mal? he buscado info pero no he encontrado algo específico a mi problema, solo documentación de porque se implementa y de como nacio, pero no algo de porque me lo agrega en el último nodo y no cuando yo quiero. Cabe destacar que si lo agrego a mano (el xsi:nil...) el xmlspy me lo reconoce sin problemas y la validación es correcta..
Agradesco cualquier ayuda.. te antemano gracias...