Importar dados XML de nomeação para objetos de nomeação do Outlook (Outlook)
Este tópico mostra como ler dados de compromisso formatados em XML, salvar os dados em objetos AppointmentItem do Microsoft Outlook no calendário padrão e retornar os objetos de compromisso em uma matriz.
|
| Helmut Obertanner forneceu os seguintes exemplos de código. Helmut é um profissional mais valioso da Microsoft com experiência em ferramentas de desenvolvimento do Microsoft Office no Microsoft Visual Studio e microsoft Office Outlook.|
The following managed code samples are written in C# and Visual Basic. To run a .NET Framework managed code sample that needs to call into a Component Object Model (COM), you must use an interop assembly that defines and maps managed interfaces to the COM objects in the object model type library. Para o Outlook, use o Visual Studio e o Pia (Conjunto de Interoperabilidade Primário) do Outlook. Antes de executar exemplos de código gerenciado para o Outlook 2013, verifique se você instalou a PIA do Outlook 2013 e adicionou uma referência ao componente biblioteca de objetos do Microsoft Outlook 15.0 no Visual Studio. Use os exemplos de código a ThisAddIn
seguir na classe de um suplemento do Outlook (usando ferramentas de desenvolvedor do Office para Visual Studio). The Application object in the code must be a trusted Outlook Application object provided by ThisAddIn.Globals
.
Para obter mais informações sobre como usar o Outlook PIA para desenvolver soluções gerenciadas do Outlook, confira Bem-vindo à Referência de Assembly de Interoperabilidade Primária do Outlook.
Os exemplos de código a seguir contêm o CreateAppointmentsFromXml
método da Sample
classe, implementado como parte de um projeto de suplemento do Outlook. Cada projeto adiciona uma referência para o Outlook PIA, que se baseia no namespace Microsoft.Office.Interop.Outlook.
O CreateAppointmentsFromXml
método aceita dois parâmetros de entrada, aplicativo e xml:
o aplicativo é um objeto confiável do Outlook Application .
xml é uma cadeia de caracteres XML ou uma cadeia de caracteres que representa um caminho para um arquivo XML válido. Para a finalidade dos seguintes exemplos de código, o XML delimita os dados de nomeação usando as seguintes marcas XML:
Dados de compromisso | Marca XML de delimitação |
---|---|
Todo o conjunto de dados do compromisso | <Compromissos> |
Cada compromisso no conjunto | <Nomeação> |
Hora de início de um compromisso | <Starttime> |
Hora de término de um compromisso | <Endtime> |
Título de um compromisso | <Assunto> |
Local de um compromisso | <Localização> |
Detalhes de um compromisso | <Corpo> |
O exemplo a seguir mostra dados de entrada para o parâmetro xml.
<?xml version="1.0" encoding="utf-8" ?>
<appointments>
<appointment>
<starttime>2009-06-01T15:00:00</starttime>
<endtime>2009-06-01T16:15:00</endtime>
<subject>This is a Test-Appointment</subject>
<location>At your Desk</location>
<body>Here is the Bodytext</body>
</appointment>
<appointment>
<starttime>2009-06-01T17:00:00</starttime>
<endtime>2009-06-01T17:15:00</endtime>
<subject>This is a second Test-Appointment</subject>
<location>At your Desk</location>
<body>Here is the Bodytext</body>
</appointment>
<appointment>
<starttime>2009-06-01T17:00:00</starttime>
<endtime>2009-06-01T18:15:00</endtime>
<subject>This is a third Test-Appointment</subject>
<location>At your Desk</location>
<body>Here is the Bodytext</body>
</appointment>
</appointments>
O CreateAppointmentsFromXml
método usa a implementação do Microsoft COM do DOM (Modelo de Objeto de Documento XML) para carregar e processar os dados XML fornecidos pelo XML . CreateAppointmentsFromXml
primeiro verifica se xml especifica uma fonte válida de dados XML. Se sim, ele carrega os dados em um documento XML, DOMDocument. Caso contrário, CreateAppointmentsFromXml
gera uma exceção. Para mais informações sobre o DOM XML, confira DOM.
Para cada nó filho de compromisso delimitado pela <marca de compromisso> nos dados XML, CreateAppointmentsFromXml
procura marcas específicas, usa o DOM para extrair os dados e atribui os dados às propriedades correspondentes de um objeto AppointmentItem : Iniciar, Terminar, Assunto, Localização e Corpo. CreateAppointmentsFromXml
em seguida, salva o compromisso no calendário padrão.
CreateAppointmentsFromXml
usa o método Add da classe List( type) no namespace System.Collections.Generic para agregar esses objetos AppointmentItem . Quando o método tiver processado todos os compromissos dos dados XML, retornará objetos AppointmentItem em uma matriz.
Veja a seguir o exemplo de código do C#.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using Outlook = Microsoft.Office.Interop.Outlook;
namespace OutlookAddIn1
{
class Sample
{
Outlook.AppointmentItem[] CreateAppointmentsFromXml(Outlook.Application application,
string xml)
{
// Create a list of appointment objects.
List<Outlook.AppointmentItem> appointments = new
List<Microsoft.Office.Interop.Outlook.AppointmentItem>();
XmlDocument xmlDoc = new XmlDocument();
// If xml is an XML string, create the document directly.
if (xml.StartsWith("<?xml"))
{
xmlDoc.LoadXml(xml);
}
else if (File.Exists(xml))
{
xmlDoc.Load(xml);
}
else
{
throw new Exception(
"The input string is not valid XML data or the specified file doesn't exist.");
}
// Select all appointment nodes under the root appointments node.
XmlNodeList appointmentNodes = xmlDoc.SelectNodes("appointments/appointment");
foreach (XmlNode appointmentNode in appointmentNodes)
{
// Create a new AppointmentItem object.
Outlook.AppointmentItem newAppointment =
(Outlook.AppointmentItem)application.CreateItem(Outlook.OlItemType.olAppointmentItem);
// Loop over all child nodes, check the node name, and import the data into the
// appointment fields.
foreach (XmlNode node in appointmentNode.ChildNodes)
{
switch (node.Name)
{
case "starttime":
newAppointment.Start = DateTime.Parse(node.InnerText);
break;
case "endtime":
newAppointment.End = DateTime.Parse(node.InnerText);
break;
case "subject":
newAppointment.Subject = node.InnerText;
break;
case "location":
newAppointment.Location = node.InnerText;
break;
case "body":
newAppointment.Body = node.InnerText;
break;
}
}
// Save the item in the default calendar.
newAppointment.Save();
appointments.Add(newAppointment);
}
// Return an array of new appointments.
return appointments.ToArray();
}
}
}
Veja a seguir o exemplo de código do Visual Basic.
Imports System.IO
Imports System.Xml
Imports Outlook = Microsoft.Office.Interop.Outlook
Namespace OutlookAddIn2
Class Sample
Function CreateAppointmentsFromXml(ByVal application As Outlook.Application, _
ByVal xml As String) As Outlook.AppointmentItem()
Dim appointments As New List(Of Outlook.AppointmentItem)
Dim xmlDoc As New XmlDocument()
If xml is an XML string, create the XML document directly.
If xml.StartsWith("<?xml") Then
xmlDoc.LoadXml(xml)
ElseIf (File.Exists(xml)) Then
xmlDoc.Load(xml)
Else
Throw New Exception("The input string is not valid XML data or the specified file doesn't exist.")
End If
' Select all appointment nodes under the root appointments node.
Dim appointmentNodes As XmlNodeList = xmlDoc.SelectNodes("appointments/appointment")
For Each appointmentNode As XmlNode In appointmentNodes
' Create a new AppointmentItem object.
Dim newAppointment As Outlook.AppointmentItem = _
DirectCast(application.CreateItem(Outlook.OlItemType.olAppointmentItem), _
Outlook.AppointmentItem)
' Loop over all child nodes, check the node name, and import the data into the appointment fields.
For Each node As XmlNode In appointmentNode.ChildNodes
Select Case (node.Name)
Case "starttime"
newAppointment.Start = DateTime.Parse(node.InnerText)
Case "endtime"
newAppointment.End = DateTime.Parse(node.InnerText)
Case "subject"
newAppointment.Subject = node.InnerText
Case "location"
newAppointment.Location = node.InnerText
Case "body"
newAppointment.Body = node.InnerText
End Select
Next
' Save the item in the default calendar.
newAppointment.Save()
appointments.Add(newAppointment)
Next
' Return an array of new appointments.
Return appointments.ToArray()
End Function
End Class
End Namespace
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.