Microsoft Identity Integration Server 2003 Developer Reference

Viewing and Extracting XML Data

This topic discusses how to use XSLT to view information in the XML that Microsoft Identity Integration Server 2003 can supply. This topic also explains how to use the .NET Framework classes to extract information from the XML that Microsoft Identity Integration Server 2003 can supply.

Using XSLT to View XML Data

The following example shows how to view some of the elements in a CsExport XML file using XSLT. It displays the information for the <attr> elements with a displayName, employeeStatus, or employeeType attribute for any object in a <synchronized-hologram> section.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>

<xsl:template match="/">

<TABLE border = "2" bgcolor="#FFFFFF">
  <TR>
	<TH>Display Name</TH>
	<TH>Employee Status</TH>
	<TH>Employee Type</TH>
  </TR>

  <xsl:for-each select="/cs-objects/cs-object">
  <xsl:variable name="object" select="."/>

	<TR>
	<xsl:for-each select="$object/synchronized-hologram/entry/attr">
		<xsl:variable name="attribute" select="."/>

		<xsl:if test="$attribute/@name = 'displayName'">
		<TD>
			<xsl:value-of select="$attribute/value"/>
		</TD>
		</xsl:if>

		<xsl:if test="$attribute/@name = 'employeeStatus'">
		<TD>
			<xsl:value-of select="$attribute/value"/>
		</TD>
		</xsl:if>

		<xsl:if test="$attribute/@name = 'employeeType'">
		<TD>
			<xsl:value-of select="$attribute/value"/>
		</TD>
		</xsl:if>

	</xsl:for-each>
	</TR>

	</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>

Note  To make the previous XSLT work, you must insert the following lines into the XML file as the first lines, where CsExport.xsl is the name of the file containing the XSL commands:

<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="CsExport.xsl"?>

Using the .NET Framework Classes to Extract Information from XML Data in Visual Basic .NET [Visual Basic .NET]

The following code example in Visual Basic .NET shows how to extract some of the elements in a CsExport XML file. It displays the information for the <attr> elements with a displayName, employeeStatus, or employeeType attribute for any object in a <synchronized-hologram> section.

Imports System
Imports System.IO
Imports System.Text
Imports System.Xml

Module Module1

	Sub Main()
		' The hologram
		Dim sHologram	As String = "cs-object/synchronized-hologram/"

		Dim DisplayName	As String = sHologram + "entry/attr[@name='displayName']/value"
		Dim EmployeeStatus As String = sHologram + "entry/attr[@name='employeeStatus']/value"
		Dim EmployeeType   As String = sHologram + "entry/attr[@name='employeeType']/value"

		Console.WriteLine("Enter the name of the XML file")
		filename = Console.ReadLine()

		Try
			Dim mySR   As StreamReader  = File.OpenText(filename)
			Dim reader As XmlTextReader = new XmlTextReader(mySR)
			Dim doc	As XmlDocument   = new XmlDocument()
		
			doc.Load(reader);

			dim attrNode As XmlNode

			attrNode = doc.DocumentElement.SelectSingleNode(DisplayName)

			If Not attrNode Is Nothing Then
				Console.WriteLine("DisplayName: " + attrNode.InnerText)
			End If

			attrNode = doc.DocumentElement.SelectSingleNode(EmployeeStatus)

			If Not attrNode Is Nothing Then
				Console.WriteLine("EmployeeStatus: " + attrNode.InnerText)
			End If

			attrNode = doc.DocumentElement.SelectSingleNode(EmployeeType)

			If Not attrNode Is Nothing Then
				Console.WriteLine("EmployeeType: " + attrNode.InnerText)
			End If
		Catch xe As XmlException
			Console.WriteLine("XML Exception: " + xe.Message)
		Catch fnfe As FileNotFoundException
			Console.WriteLine("Exception: " + fnfe.Message)
		End Try
	End Sub
End Module

Using the .NET Framework Classes to Extract Information from XML Data in C# [C#]

The following code example in C# shows how to extract some of the elements in a CsExport XML file. It displays the information for the <attr> elements with a displayName, employeeStatus, or employeeType attribute for any object in a <synchronized-hologram> section.

using System;
using System.IO;
using System.Text;
using System.Xml;

public class getAttr
{
   [STAThread]
   static void Main(string[] args)
   {
	// The hologram
	string sHologram	 = "cs-object/synchronized-hologram/";

	string DisplayName	= sHologram + "entry/attr[@name='displayName']/value";
	string EmployeeStatus = sHologram + "entry/attr[@name='employeeStatus']/value";
	string EmployeeType   = sHologram + "entry/attr[@name='employeeType']/value"; 

	Console.WriteLine("Enter the name of the XML file");
	String filename = Console.ReadLine();

	try
	{
		 StreamReader  mySR   = File.OpenText(filename);
		 XmlTextReader reader = new XmlTextReader(mySR);
		 XmlDocument doc	= new XmlDocument();
		
		 doc.Load(reader);

		 XmlNode attrNode;

		 attrNode = doc.DocumentElement.SelectSingleNode(DisplayName);

		 if(!(attrNode == null))
		 {
			Console.WriteLine("DisplayName: " + attrNode.InnerText);
		 }

		 attrNode = doc.DocumentElement.SelectSingleNode(EmployeeStatus);

		 if(!(attrNode == null))
		 {
			Console.WriteLine("EmployeeStatus: " + attrNode.InnerText);
		 }

		 attrNode = doc.DocumentElement.SelectSingleNode(EmployeeType);

		 if(!(attrNode == null))
		 {
			Console.WriteLine("EmployeeType: " + attrNode.InnerText);
		 }
}
	catch(XmlException xe)
	{
		 Console.WriteLine("XML Exception: " + xe.Message);
}
	catch(FileNotFoundException fnfe)
	{
		 Console.WriteLine("Exception: " + fnfe.Message);
}
   }
}  // To compile: csc /r:System.Xml.dll /out:getAttr.exe getAttr.cs