Leadtools.Dicom.Common

SaveXmlCallback Delegate

Show in webframe
ExampleExample 





An instance of the SaveXmlData interface containing the progress callback data.
Optional delegate method that is used with the SaveXml methods.
Syntax
public delegate bool SaveXmlCallback( 
   SaveXmlData data
)
'Declaration
 
Public Delegate Function SaveXmlCallback( _
   ByVal data As SaveXmlData _
) As Boolean
'Usage
 
Dim instance As New SaveXmlCallback(AddressOf HandlerMethod)

            

            
public delegate bool SaveXmlCallback( 
   SaveXmlData^ data
)

Parameters

data
An instance of the SaveXmlData interface containing the progress callback data.

Return Value

return true to write this DICOM element in the output xml file; return false to skip writing this element in the output xml file
Remarks
This delegate is called once for each DICOM element before it is written to the XML file.
Example
Copy Code  
Imports Leadtools.Dicom
Imports Leadtools.Dicom.Common
Imports Leadtools.Dicom.Common.Extensions
Imports Leadtools.Dicom.Common.Linq
Imports Leadtools.Dicom.Common.Linq.BasicDirectory
Imports Leadtools
Imports Leadtools.Dicom.Common.DataTypes

Public Sub SaveXmlCallbackExample()
   Dim dicomFileNameIn As String = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm")
   Dim xmlFileNameOut As String = Path.Combine(LEAD_VARS.ImagesDir, "test.xml")
   Dim dicomFileNameOut As String = Path.Combine(LEAD_VARS.ImagesDir, "test.dcm")

   ' Initialize DICOM engine
   DicomEngine.Startup()

   Dim ds As DicomDataSet = New DicomDataSet()

   ' Load an existing DICOM file
   ds.Load(dicomFileNameIn, DicomDataSetLoadFlags.None)

   ' Save as XML to a file with no binary data
   ' For the demo, keep the xml output file size small by skipping the pixel data
   ' Use the SaveXmlCallback delegate to customize the xml file
   Dim xmlFlags As DicomDataSetSaveXmlFlags = DicomDataSetSaveXmlFlags.IgnoreBinaryData Or DicomDataSetSaveXmlFlags.TrimWhiteSpace Or DicomDataSetSaveXmlFlags.TagWithCommas

   ds.SaveXml(xmlFileNameOut, xmlFlags, New SaveXmlCallback(AddressOf MySaveXmlCallback))

   ' Use a LoadmlCallback to read the customized xml file
   ds.LoadXml(xmlFileNameOut, DicomDataSetLoadXmlFlags.None, New LoadXmlBeforeElementCallback(AddressOf MyLoadXmlBeforeElementCallback), New LoadXmlAfterElementCallback(AddressOf MyLoadXmlAfterElementCallback))

   ' Save the result -- there will be no pixel data
   ds.Save(dicomFileNameOut, DicomDataSetSaveFlags.None)

   DicomEngine.Shutdown()
End Sub

Private Function MySaveXmlCallback(ByVal data As SaveXmlData) As Boolean
   'string sTag = data.attributes["tag"];
   'if (sTag.StartsWith("0008"))
   '   return false;
   If data.NodeType = DicomXmlNodeType.Comment Then
      data.Comment = "COMMENT: customized xml file using the SaveXmlCallback"
      Return False
   End If

   If data.ElementName = "dataset" Then
      data.Attributes.Add("new_attribute", "some_value")
   ElseIf data.ElementName = "element" Then
      data.ElementName = "element_newname"
      Dim sTagValue As String = data.Attributes("tag")
      data.Attributes.Remove("tag")
      data.Attributes.Add("tag_newname", sTagValue)
   End If
   Return True
End Function

Private Function MyLoadXmlBeforeElementCallback(ByVal data As LoadXmlBeforeElementData) As Boolean
   Dim sTagValue As String = data.Attributes("tag_newname")
   Dim tag As Long = 0
   sTagValue = sTagValue.Replace(",", String.Empty)
   If Long.TryParse(sTagValue, System.Globalization.NumberStyles.HexNumber, Nothing, tag) Then
      data.Tag = tag
   End If
   Return True
End Function

Private Sub MyLoadXmlAfterElementCallback(ByVal data As LoadXmlAfterElementData)
   If data.DicomElement.Tag = DicomTag.PixelData Then
      ' here you could call one of the following to set the pixel data
      '    data.DicomDataSet.SetBinaryValue 
      '    data.DicomDataSet.SetImage()
   End If
End Sub

Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
Requirements

Target Platforms

See Also

Reference

SaveXmlCallback Members
Leadtools.Dicom.Common.Extensions Namespace
LoadXml(DicomDataSet,String,DicomDataSetLoadXmlFlags,LoadXmlBeforeElementCallback,LoadXmlAfterElementCallback) Method
LoadXml(DicomDataSet,Stream,DicomDataSetLoadXmlFlags,LoadXmlBeforeElementCallback,LoadXmlAfterElementCallback) Method
LoadXml(DicomDataSet,String,DicomDataSetLoadXmlFlags) Method
LoadXml(DicomDataSet,Stream,DicomDataSetLoadXmlFlags) Method
SaveXml(DicomDataSet,String,DicomDataSetSaveXmlFlags,SaveXmlCallback) Method
SaveXml(DicomDataSet,Stream,DicomDataSetSaveXmlFlags,SaveXmlCallback) Method
SaveXml(DicomDataSet,String,DicomDataSetSaveXmlFlags) Method
SaveXml(DicomDataSet,Stream,DicomDataSetSaveXmlFlags) Method
SaveXmlCallback Delegate
LoadXmlBeforeElementCallback Delegate
LoadXmlAfterElementCallback Delegate

 

 


Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.

Leadtools.Dicom.Common requires a Document or Medical toolkit license and unlock key. For more information, refer to: Imaging Pro/Document/Medical Features