Retrieving Playlist Entries
The following code examples illustrate how to retrieve all of the elements in a playlist and the names and values of any attributes assigned to them.
Visual Basic .NET Example
Imports Microsoft.WindowsMediaServices.Interop
Imports interop_msxml
Private Sub RetrieveEntries()
' Declare variables.
Dim Server As WMSServer
Dim Playlist As IXMLDOMDocument
Dim Node As IXMLDOMNode
Dim NodeList As IXMLDOMNodeList
Dim AttrNode As IXMLDOMNode
Dim NodeAttributes As IXMLDOMNamedNodeMap
Dim NodeName As String
Dim NodeType As String
Dim AttrName As String
Dim AttrValue As String
Dim I As Long
Dim J As Long
Try
' Create new server and playlist objects.
Server = New WMSServer()
Playlist = Server.CreatePlaylist
' Load an existing playlist from a file.
Playlist.load("c:\wmpub\wmroot\playlist.wsx")
' Retrieve a list of all nodes in the playlist file.
NodeList = Playlist.getElementsByTagName("*")
' Retrieve all elements and the attributes assigned to them.
For I = 0 To NodeList.length - 1
' Retrieve the next node in the playlist.
Node = NodeList.item(I)
' Retrieve the name and type of the node.
NodeName = Node.nodeName
NodeType = Node.nodeType
' If the node is an element, retrieve the attributes.
If NodeType = interop_msxml.DOMNodeType.NODE_ELEMENT Then
NodeAttributes = Node.attributes
' Loop through all elements and retrieve the
' name and value of each.
For J = 0 To NodeAttributes.length - 1
AttrNode = NodeAttributes.item(J)
AttrName = AttrNode.nodeName
AttrValue = AttrNode.nodeValue
Next
End If
Next
Catch Err As Exception
' TODO: Exception handler goes here.
Finally
' TODO: Clean-up code goes here.
End Try
End Sub
C# Example
using Microsoft.WindowsMediaServices.Interop;
using interop_msxml;
// Declare variables.
IXMLDOMDocument playlist;
IXMLDOMNode attr_node, node;
IXMLDOMNodeList node_list;
IXMLDOMNamedNodeMap node_attributes;
DOMNodeType node_type;
string attr_name, attr_value, node_name;
int i,j;
try
{
// Create new server and playlist objects.
WMSServer server = new WMSServerClass();
playlist = (IXMLDOMDocument)server.CreatePlaylist();
// Load an existing playlist from a file.
playlist.load("c:\\wmpub\\wmroot\\playlist.wsx");
// Retrieve a list of all nodes in the playlist file.
node_list = playlist.getElementsByTagName("*");
// Retrieve all elements and attributes.
for (i=0; i<node_list.length; i++)
{
// Retrieve the next node in the playlist.
node = node_list[i];
// Retrieve the name and type of the node.
node_name = node.nodeName;
node_type = node.nodeType;
// If the node is an element, retrieve its attributes.
if (node_type == DOMNodeType.NODE_ELEMENT)
{
node_attributes = node.attributes;
// Retrieve the attributes for each element
for (j=0; j < node_attributes.length; j++)
{
attr_node = node_attributes[j];
attr_name = attr_node.nodeName;
attr_value = (string)attr_node.nodeValue;
}
}
}
}
catch(Exception)
{
// TODO: Exception handler goes here.
}
finally
{
// TODO: Clean-up code goes here.
}
C++ Example
// Include header files.
#include <windows.h>
#include <atlbase.h> // Includes CComBSTR and CComVariant.
#include "wmsserver.h"
// Declare variables and interfaces.
IWMSServer *pServer;
IXMLDOMDocument *pPlaylist;
IXMLDOMNode *pAttrNode, *pNode;
IXMLDOMNodeList *pNodeList;
IXMLDOMNamedNodeMap *pNodeAttr;
DOMNodeType *pNodeType;
CComBSTR bstrAttrName, bstrAttrValue;
CComBSTR bstrTemp, bstrName;
CComVariant varValue;
int i, j;
long lLength;
HRESULT hr;
// Initialize the COM library and retrieve a pointer
// to an IWMSServer interface.
hr = CoInitialize(NULL);
if (FAILED(hr))goto EXIT;
hr = CoCreateInstance(CLSID_WMSServer,
NULL,
CLSCTX_ALL,
IID_IWMSServer,
(void **)&pServer);
if (FAILED(hr))goto EXIT;
// Create the playlist object.
hr = pServer->CreatePlaylist(&pPlaylist);
if (FAILED(hr))goto EXIT;
// Retrieve the list of all nodes in the XML playlist file.
bstrTemp = "*";
hr = pPlaylist->getElementsByTagName(bstrTemp, &pNodeList);
if (FAILED(hr))goto EXIT;
// Retrieve all elements and their attributes.
hr = pNodeList->get_length(&lLength);
if (FAILED(hr))goto EXIT;
for (i=0; i < lLength; i++)
{
// Retrieve the next node in the playlist.
hr = pNodeList->get_item((long)i, &pNode);
if (FAILED(hr))goto EXIT;
// Retrieve the name and type of the node.
hr = pNode->get_nodeName(&bstrName);
if (FAILED(hr))goto EXIT;
hr = pNode->get_nodeType(pNodeType);
if (FAILED(hr))goto EXIT;
// If the node is an element, retrieve the attributes.
if (*pNodeType == NODE_ELEMENT)
{
hr = pNode->get_attributes(&pNodeAttr);
if (FAILED(hr))goto EXIT;
// Loop through all elements and retrieve the
// name and value of each.
hr = pNodeAttr->get_length(&lLength);
if (FAILED(hr))goto EXIT;
for (j=0; j < lLength; j++)
{
hr = pNodeAttr->get_item((long)j, &pAttrNode);
if (FAILED(hr))goto EXIT;
hr = pAttrNode->get_nodeName(&bstrAttrName);
if (FAILED(hr))goto EXIT;
hr = pAttrNode->get_nodeValue(&varValue);
if (FAILED(hr))goto EXIT;
}
}
}
EXIT:
// TODO: Release temporary objects and uninitialize COM.
See Also (General)
See Also (Visual Basic .NET)
IWMSServerIWMSServer Object (Visual Basic .NET)
IXMLDOMDocumentIXMLDOMDocument Object (Visual Basic .NET)
IXMLDOMNamedNodeMapIXMLDOMNamedNodeMap Object (Visual Basic .NET)
IXMLDOMNodeIXMLDOMNode Object (Visual Basic .NET)
See Also (C#)
IWMSServerIWMSServer Object (C#)
IXMLDOMDocumentIXMLDOMDocument Object (C#)
IXMLDOMNamedNodeMapIXMLDOMNamedNodeMap Object (C#)
IXMLDOMNodeIXMLDOMNode Object (C#)
See Also (C++)
IWMSServerIWMSServer Interface
IXMLDOMDocumentIXMLDOMDocument Interface
IXMLDOMNamedNodeMapIXMLDOMNamedNodeMap Interface
IXMLDOMNodeIXMLDOMNode Interface