
A mellékelt példa használata előtt importálnia kell a Microsoft XML komponenst. Ennek elkészítéséhez a következőket kell tennünk: a Project menüből válasszuk ki az Import Type Library menüpontot. A listában keressük meg a Microsoft XML elemet. Lehet, hogy több verzió is létezik belőle, válasszuk a legmagasabb verziószámút. A Create Unit gombbal hozzuk létre a unit-ot, amire a programban a uses kulcsszó után hivatkozunk.
Címlista elemeinek lekérdezése
A mellékelt projekt mappájában elhelyeztünk egy parancsállományt GetList.js néven, melyben a lekérdezés műveletét – az Outlook Címjegyzékében megtalálható nevek és a kapcsolódó e-mail címek XML állományba történő mentése – megvalósítottuk.
A megvalósításhoz az MSXML COM komponens 2.0 verzióját használjuk fel, mely a parancsállományból is elérhető. Vizsgáljuk meg, hogy milyen lépéseket kell tennünk a listázás érdekében. A művelet úgy indul, hogy az alkalmazás MENTÉS feliratú gombjának segítségével meghívjuk a Process osztály Start metódusát, mely lefuttatja a parancsállományt.
A parancsállományban először létre kell hoznunk egy objektum-példányt a Microsoft Outlook alkalmazásból, majd le kell kérdeznünk a MAPI nevű névterét, melyben a Címlista elemei érhetők el.
var oa = new ActiveXObject("Outlook.Application");
var mapi = oa.getNameSpace("MAPI");
A névtér egy kollekciójának tartalmát egy objektumba mentjük, melynek elemein egy ciklussal végigmegyünk.
var lists = mapi.AddressLists;
A következő lépésben meghívjuk a parancsállományban implementált belső metódusunkat, mely létrehoz egy, az XML tárolására alkalmas objektumot. A metódus a paraméterként megadott néven hozza létre az állomány gyökércsomópontját.
var xml = CreateDocument("AddressLists");
var root = xml.documentElement;
Ezt a gyökérobjektumot kérdezhetjük le a documentElement property kiolvasásával. Erre azért van szükség, hogy a neveket és e-mail címeket tartalmazó csomópont-objektumokat legyen mire felfűzni.
A ciklusban lekérdezzük a címlistákat, majd a címlisták minden bejegyzését, melyeket egy-egy AddressEntry objektum reprezentál.
for(var i=1;i<=lists.Count;i++)
{
var aList = lists.Item(i);
var entries= aList.AddressEntries;
A bejegyzések mindegyike több információt tartalmaz, melyek közül minket most a név- és az elektronikus levélcím-információ érdekel.
for(var j=1;j<=entries.Count;j++)
{
Minden bejegyzéshez létrehozunk egy AddressEntry csomópontot az XML-ben az AppendChild metódussal.
var entry = AppendChild(xml,root,"AddressEntry",null);
var aEntry = entries.item(j);
A kapott információkat pedig felfűzzük erre a csomópontra.
AppendChild(xml,entry,"Name", aEntry.Name);
AppendChild(xml,entry,"Address",aEntry.Address);
}
}
A művelet végén elmentjük az XML állományt AddressBook.xml néven, az objektum Save metódusával.
var xmlName = "./AddressBook.xml";
xml.save(xmlName);
Most vizsgáljuk meg a két segédmetódust.
CreateDocument metódus
Az XML-t reprezentáló objektumot létrehozó CreateDocument metódusban példányosítjuk a MSXML2.DOMDocument objektumot.
function CreateDocument(rootName)
{
var xml = null;
try
{
xml = new ActiveXObject("Msxml2.DOMDocument");
}
...
Majd a megfelelő property beállítása után létrehozunk egy XML csomópont-objektumot a paraméterként megadott névvel.
var root = xml.createElement(rootName);
A létrejött elemet az XML dokumentumhoz adjuk, felfűzzük a legelső elemként.
AppendChild metódus
A metódus négy paraméterrel rendelkezik. Az első paraméterben átadjuk az XML objektumot, míg a másodikban a gyökérelemet reprezentáló objektumot. A harmadik paraméter tartalmazza a létrehozandó alcsomópont nevét, és a negyedik paraméterben adhatunk értéket a csomópontnak.
A metódusban első lépésként létrehozunk egy csomópontot.
function AppendChild(xml, parent, name, value)
{
var item = xml.createElement(name);
Ha a negyedik paraméter nem NULL, akkor a csomópont TEXT property-jében megadjuk az értéket is.
if(value != null)
{
item.text = value;
}
A csomópontot a kapott szülőelemre fűzzük fel.
parent.appendChild(item);
return item;
}
A generált XML állományt a Form TTreeView kontroljában jelenítjük meg, egy-egy csomópontot szentelve a bejegyzésekhez tartozó név és e-mail cím számára.
A TreeView kontrol feltöltése a FillTree metódussal történik, melyben felhasználjuk az importált típuskönyvtár egyik interfészét.