Ir al contenido



Foto

XML a TreeView

xml delphi7

  • Por favor identifícate para responder
4 respuestas en este tema

#1 MarCaribe

MarCaribe

    Member

  • Miembros
  • PipPip
  • 34 mensajes

Escrito 06 junio 2019 - 04:47

Hola amigos del foro,

 

Abro este nuevo tema, porque estuve mirando la manera de pasar un xml a treeview en delphi 7 pero no he dado la forma como hacerlo, he navegado por internet y me he topado con temas relacionados pero nada que se adapte a mi necesidad, el tema del uso de los xmlDocument es nuevo para mi, tengo idea de como pasarlos a un arbol pero aun no logro concretar esa idea en codigo, agradeceria una mano, ya que realmente estoy algo confundida...

 

estuve pensando la idea de pasarlos a un meno e ir leyendo linea a linea e ir salvando los atributos pero me parece algo tedioso, poco eficiente y la verdad les repito tengo idea pero no sabria como plasmarlo, les agradezco me puedan hechar una mano.

 

Cabe resaltar que, la version del archivo xml que obtengo es nueva para mi. Aqui les dejo una parte somera de los xml que estoy recibiendo y debo tratar...


xml
  1. [0]
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <hl7:POOR_IN200901UV
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:hl7-org:v3 http://www.hl7.org/v3ballot/html/processable/multicacheschemas/POOR_IN200901UV.xsd"
  5. xmlns:hl7="urn:hl7-org:v3" TSVersion="XML_1.0">
  6. <hl7:templateId extension="POOR_RM201270CO01" assigningAuthorityName="HL7CO"/>
  7. <hl7:id root="UNK" extension="POOR_IN200901UV-768895" displayable="true"/>
  8. <hl7:creationTime value="20190606112815"/>
  9. <hl7:versionCode code="V3-2009N"/>
  10. <hl7:interactionId root="2.16.840.1.113883.1.6" extension="POOR_IN200901UV"/>
  11. <hl7:processingCode code="P"/>
  12. <hl7:processingModeCode code="T"/>
  13. <hl7:acceptAckCode code="AL"/>
  14. <hl7:receiver typeCode="RCV">
  15. <hl7:device classCode="DEV" determinerCode="INSTANCE">
  16. <hl7:id root="UNK" extension="00000000-0000-0000-0000-000000000000"/>
  17. <hl7:softwareName displayName=""/>
  18. </hl7:device>
  19. </hl7:receiver>
  20. <hl7:sender typeCode="SND">
  21. <hl7:device classCode="DEV" determinerCode="INSTANCE">
  22. <hl7:id root="UNK" extension="SIOS"/>
  23. <hl7:softwareName displayName="Sistema de Informacion para Operaciones en Salud"/>
  24. </hl7:device>
  25. </hl7:sender>
  26. <hl7:controlActProcess classCode="CACT" moodCode="EVN">
  27. <hl7:code code="POOR_TE200901UV" codeSystem="2.16.840.1.113883.1.18" codeSystemName="TriggerEventID" displayName="Composite Order Activate"/>
  28. <hl7:languageCode code="es-co" codeSystem="2.16.840.1.113883.1.11.11526" codeSystemName="HumanLanguage" displayName="Espanol Colombia"/>
  29. <hl7:dataEnterer contextControlCode="AP" typeCode="ENT">
  30. <hl7:assignedPerson classCode="ASSIGNED">
  31. <hl7:id root="CC" extension="1123994304"/>
  32. <hl7:assignedPerson classCode="PSN" determinerCode="INSTANCE">
  33. <hl7:name>
  34. <hl7:given>JANET</hl7:given>
  35. <hl7:given></hl7:given>
  36. <hl7:family>FONTALVO</hl7:family>
  37. <hl7:family>SOLANO</hl7:family>
  38. </hl7:name>
  39. </hl7:assignedPerson>
  40. </hl7:assignedPerson>
  41. </hl7:dataEnterer>
  42. <hl7:subject typeCode="SUBJ" contextConductionInd="true">
  43. <hl7:observationRequest classCode="OBS" moodCode="RQO" negationInd="false">
  44. <hl7:id root="UNK" extension="768895"/>
  45. <hl7:code code="26436-6" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Pruebas diagnosticas de laboratorio"/>
  46. <hl7:text></hl7:text>
  47. <hl7:statusCode code="active"/>
  48. <hl7:device typeCode="DEV" contextControlCode="ON">
  49. <hl7:assignedDevice classCode="ASSIGNED">
  50. <hl7:id root="" extension=""/>
  51. <hl7:assignedDevice classCode="DEV" determinerCode="INSTANCE">
  52. <hl7:manufacturerModelName code="" displayName=""/>
  53. </hl7:assignedDevice>
  54. </hl7:assignedDevice>
  55. </hl7:device>
  56. <hl7:recordTarget typeCode="RCT" contextControlCode="OP">
  57. <hl7:patient classCode="PAT">
  58. <hl7:id root="UNK" extension="VEN29787695"/>
  59. <hl7:patientPerson classCode="PSN" determinerCode="INSTANCE">
  60. <hl7:id root="AS" extension="VEN29787695"/>
  61. <hl7:name>
  62. <hl7:given>YOSUKAY</hl7:given>
  63. <hl7:given>DE LOS ANGELES</hl7:given>
  64. <hl7:family>GALUE</hl7:family>
  65. <hl7:family>GONZALEZ</hl7:family>
  66. </hl7:name>
  67. <hl7:administrativeGenderCode code="F" codeSystem="2.16.840.1.113883.5.1" codeSystemName="AdministrativeGender" displayName="FEMENINO"/>
  68. <hl7:birthTime value="20030424"/>
  69. <hl7:direction>NO SABE </hl7:direction>
  70. <hl7:phone>0000000000</hl7:phone>
  71. <hl7:celphone>0000000000</hl7:celphone>
  72. <hl7:city>44430</hl7:city>
  73. <hl7:zone>U</hl7:zone>
  74. <hl7:pregnant>No</hl7:pregnant>
  75. <hl7:client>99</hl7:client>
  76. <hl7:clientName>GOBERNACIÓN DEL DEPARTAMENTO DE LA GUAJIRA</hl7:clientName>
  77. <hl7:clientNit>892115015</hl7:clientNit>
  78. <hl7:doctor>1126122969</hl7:doctor>
  79. <hl7:doctorName>ELVIS ANTONIO BASABE LOPEZ</hl7:doctorName>
  80. <hl7:doctorNit>1126122969</hl7:doctorNit>
  81. <hl7:email>No Registra</hl7:email>
  82. <hl7:bed></hl7:bed>
  83. <hl7:diagnosis></hl7:diagnosis>
  84. <hl7:wight></hl7:wight>
  85. <hl7:size></hl7:size>
  86. <hl7:affiliateType>BENEFICIARIO</hl7:affiliateType>
  87. <hl7:userType>BENEFICIARIO</hl7:userType>
  88. <hl7:copayment>0 + 0.00</hl7:copayment>
  89. <hl7:costCenter>07</hl7:costCenter>
  90. <hl7:costCenterName>Urgencias Ginecologia</hl7:costCenterName>
  91. <hl7:renalControl></hl7:renalControl>
  92. </hl7:patientPerson>
  93. </hl7:patient>
  94. </hl7:recordTarget>
  95. <hl7:author typeCode="AUT" contextControlCode="OP">
  96. <hl7:assignedEntity classCode="ASSIGNED">
  97. <hl7:id root="CC" extension="1126122969"/>
  98. <hl7:telecom value=""/>
  99. <hl7:assignedPerson classCode="PSN" determinerCode="INSTANCE">
  100. <hl7:name>
  101. <hl7:given>ELVIS</hl7:given>
  102. <hl7:given>ANTONIO</hl7:given>
  103. <hl7:family>BASABE</hl7:family>
  104. <hl7:family>LOPEZ</hl7:family>
  105. </hl7:name>
  106. <hl7:asLocatedEntity classCode="LOCE">
  107. <hl7:location classCode="PLC" determinerCode="INSTANCE">
  108. <hl7:name>Urgencias</hl7:name>
  109. </hl7:location>
  110. </hl7:asLocatedEntity>
  111. </hl7:assignedPerson>
  112. <hl7:representedOrganization classCode="ORG" determinerCode="INSTANCE">
  113. <hl7:id root="codHabilitacionPrestadorSalud" extension="444300027701" assigningAuthorityName="MinProteccionSocial"/>
  114. <hl7:name>ESE HOSPITAL SAN JOSE DE MAICAO</hl7:name>
  115. </hl7:representedOrganization>
  116. </hl7:assignedEntity>
  117. </hl7:author>
  118. <hl7:component2 typeCode="COMP" contextControlCode="AP" contextConductionInd="true">
  119. <hl7:sequenceNumber value="1"/>
  120. <hl7:observationRequest classCode="OBS" moodCode="RQO" negationInd="false">
  121. <hl7:id root="UNK" extension="ORDEN-1774391"/>
  122. <hl7:code code="902210" codeSystemName="CUPS" displayName="HEMOGRAMA IV"/>
  123. <hl7:numExam>1</hl7:numExam>
  124. <hl7:text></hl7:text>
  125. <hl7:statusCode code="active"/>
  126. <hl7:priorityCode code="R" codeSystem="2.16.840.1.113883.5.7" codeSystemName="ActPriority" displayName="Rutina"/>
  127. <hl7:interpretationCode nullFlavor="UNK"/>
  128. </hl7:observationRequest>
  129. </hl7:component2>
  130. <hl7:component2 typeCode="COMP" contextControlCode="AP" contextConductionInd="true">
  131. <hl7:sequenceNumber value="2"/>
  132. <hl7:observationRequest classCode="OBS" moodCode="RQO" negationInd="false">
  133. <hl7:id root="UNK" extension="ORDEN-1774392"/>
  134. <hl7:code code="902045" codeSystemName="CUPS" displayName="TIEMPO DE PROTROMBINA [PT]"/>
  135. <hl7:numExam>2</hl7:numExam>
  136. <hl7:text></hl7:text>
  137. <hl7:statusCode code="active"/>
  138. <hl7:priorityCode code="R" codeSystem="2.16.840.1.113883.5.7" codeSystemName="ActPriority" displayName="Rutina"/>
  139. <hl7:interpretationCode nullFlavor="UNK"/>
  140. </hl7:observationRequest>
  141. </hl7:component2>
  142. <hl7:component2 typeCode="COMP" contextControlCode="AP" contextConductionInd="true">
  143. <hl7:sequenceNumber value="3"/>
  144. <hl7:observationRequest classCode="OBS" moodCode="RQO" negationInd="false">
  145. <hl7:id root="UNK" extension="ORDEN-1774393"/>
  146. <hl7:code code="902049" codeSystemName="CUPS" displayName="TIEMPO DE TROMBOPLASTINA PARCIAL [PTT]"/>
  147. <hl7:numExam>3</hl7:numExam>
  148. <hl7:text></hl7:text>
  149. <hl7:statusCode code="active"/>
  150. <hl7:priorityCode code="R" codeSystem="2.16.840.1.113883.5.7" codeSystemName="ActPriority" displayName="Rutina"/>
  151. <hl7:interpretationCode nullFlavor="UNK"/>
  152. </hl7:observationRequest>
  153. </hl7:component2>
  154. <hl7:component2 typeCode="COMP" contextControlCode="AP" contextConductionInd="true">
  155. <hl7:sequenceNumber value="4"/>
  156. <hl7:observationRequest classCode="OBS" moodCode="RQO" negationInd="false">
  157. <hl7:id root="UNK" extension="ORDEN-1774394"/>
  158. <hl7:code code="906249" codeSystemName="CUPS" displayName="VIH 1 Y 2, ANTICUERPOS"/>
  159. <hl7:numExam>4</hl7:numExam>
  160. <hl7:text></hl7:text>
  161. <hl7:statusCode code="active"/>
  162. <hl7:priorityCode code="R" codeSystem="2.16.840.1.113883.5.7" codeSystemName="ActPriority" displayName="Rutina"/>
  163. <hl7:interpretationCode nullFlavor="UNK"/>
  164. </hl7:observationRequest>
  165. </hl7:component2>
  166. </hl7:observationRequest>
  167. </hl7:subject>
  168. </hl7:controlActProcess>
  169. </hl7:POOR_IN200901UV>
  170. [1] ......
  171. [2] ......
  172. [3] ......

cada registro como ven ahi enumerado viene con esa longitud y estructura del primer registro.

 

encontré este hilo donde lo explican con lazaruz pero me hice bolas (http://wiki.lazarus....XML_Tutorial/es), agradezco enormemente su ayuda, plisss  :( estoy estresada por favor. ayuda. auxilio


  • 0

#2 MarCaribe

MarCaribe

    Member

  • Miembros
  • PipPip
  • 34 mensajes

Escrito 10 junio 2019 - 03:39

por favor ayuda!


  • 0

#3 ELKurgan

ELKurgan

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 543 mensajes
  • LocationEspaña

Escrito 11 junio 2019 - 03:21

Hola, Tatiana...

 

No se las versiones anteriores de Delphi como lo trataban, pero en las modernas tienes el componente  TXMLDocument., en la pestaña de componentes "Internet".

 

Lo sueltas en un formulario, le proporcionas el vendedor (en Delphi hay tres, el de Microsoft, el de IBM y el de Open XML). Yo para Windows suelo usar el de Microsoft. En el componente le pones la propiedad "DOmVendor" como "MSXML" y luego lo usas para hacer la carga.

 

Por ejemplo:

 

procedure TForm2.Button1Click(Sender: TObject);
begin
  Screen.Cursor := crHourGlass;
  try
    // Carga el XML en el TreeView
    CargarEnArbol(FixeroXML, TreeView1);
  finally
    Screen.Cursor := crDefault;
  end;
end;
 

Y la función de "CargarEnArbol" sería más o menos así:

 

 

procedure TForm2.CargarEnArbol(Fichero: String; Arbol: TTreeView);
var
  jNode : IXMLNode;
  procedure ProcessNode(Node : IXMLNode; tn : TTreeNode);
  var
    cNode : IXMLNode;
  begin
    if Node = nil then Exit;
    tn := Arbol.Items.AddChild(tn, Node.Attributes['text']);
    tn.ImageIndex := Integer(Node.Attributes['imageIndex']);
    tn.StateIndex := Integer(Node.Attributes['stateIndex']);

    cNode := Node.ChildNodes.First;
    while cNode <> nil do
    begin
      ProcessNode(cNode, tn);
      cNode := cNode.NextSibling;
    end;
  end; (*ProcessNode*)
begin
  Arbol.Items.Clear;
  XMLDocument1.FileName := fichero;
  XMLDocument1.Active := True;
  if XMLDocument1.ChildNodes.First = nil then
  begin
    ShowMessage('nil');
    Exit;
  end;
  jNode := XMLDocument1.DocumentElement.ChildNodes.First;
  while jNode <> nil do
  begin
    ProcessNode(jNode,nil);
    jNode := jNode.NextSibling;
  end;
  XMLDocument1.Active := False;
end;

 

El código no es mío, no recuerdo de donde lo saqué. Si encuentro las referencias, las añado aquí. 

 

Un saludo

 

 

 


  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.962 mensajes
  • LocationMéxico

Escrito 11 junio 2019 - 06:57

Hola
 
Puedes utilizar el código que se muestra en el siguiente enlace Display XML content using TreeView

 

Saludos
 

Archivos adjuntos


  • 0

#5 MarCaribe

MarCaribe

    Member

  • Miembros
  • PipPip
  • 34 mensajes

Escrito 11 junio 2019 - 08:44

muchas gracias a vosotros por su ayuda, yo probe un codigo y solo me cargo las primeras linea pues salia error en la trama...

ya mismo pruebo sus sugerencias, mil gracias.


  • 0





Etiquetado también con una o más de estas palabras: xml, delphi7