Vorgehensweise: Arbeiten mit den Klassen "XPathNavigator" und "XPathNodeIterator"
Viele Member des Objektmodells mit verwaltetem Code, das vom Microsoft.Office.InfoPath-Namespace bereitgestellt wird, erstellen entweder eine Instanz der XPathNavigator-Klasse des System.Xml.XPath-Namespace, oder diese Instanz wird an sie übergeben, um auf die XML-Daten in Formularvorlagen-Datenquellen zuzugreifen und sie zu bearbeiten. Wenn Sie Zugriff auf ein XPathNavigator-Objekt erhalten haben, das von einem InfoPath-Objektmodellmember zurückgegeben wird, können Sie die Eigenschaften und Methoden der XPathNavigator-Klasse verwenden, um mit den Daten zu arbeiten.
Der am häufigsten verwendete Member des Microsoft.Office.InfoPath-Namespace, der die XPathNavigator-Klasse verwendet, ist die CreateNavigator-Methode der DataSource-Klasse, die es Ihnen ermöglicht, mit den gespeicherten Daten zu arbeiten, die durch ein DataSource-Objekt dargestellt werden. Von der CreateNavigator-Methode wird ein XPathNavigator-Objekt am Stamm der Datenquelle erstellt, die vom DataSource-Objekt dargestellt wird.
Hinweis: |
---|
Wenn Sie mit der Verwendung von MSXML5 aus Skript zum Arbeiten mit Daten in Microsoft InfoPath 2003 vertraut sind, können Sie sich die CreateNavigator-Methode als Ersatz für die DOM-Eigenschaft von DataObject vorstellen. |
Im folgenden Codebeispiel wird z. B. gezeigt, wie ein XPathNavigator-Objekt am Stamm einer Datenquelle mit dem Namen "CityList" mithilfe der CreateNavigator-Methode erstellt wird und dann die OuterXml-Eigenschaft der XPathNavigator-Klasse verwendet wird, um den zurückgegebenen XML-Code in einem Meldungsfeld anzuzeigen.
XPathNavigator myNavigator =
this.DataSources["CityList"].CreateNavigator();
MessageBox.Show("Data source XML: " + myNavigator.OuterXml.ToString());
Dim myNavigator As XPathNavigator =
Me.DataSources("CityList").CreateNavigator()
MessageBox.Show("Data source XML: " & myNavigator.OuterXml.ToString())
InfoPath-Objektmodellmember, von denen die Klassen "XPathNavigator" und "XPathNodeIterator" verwendet werden
Die folgende Tabelle enthält eine Zusammenfassung aller Member des Microsoft.Office.InfoPath-Namespace, von denen die XPathNavigator-Klasse verwendet wird, um auf XML-Daten zuzugreifen, sie zu bearbeiten oder zu senden.
Übergeordnete Klasse | Member |
---|---|
BuildSqlFromXmlNodes-Methode |
|
BuildSqlFromXmlNodes-Methode |
|
Source-Eigenschaft |
|
Context-Eigenschaft |
|
DataSource |
CreateNavigator-Methode |
GetNamedNodeProperty-Methode |
|
SetNamedNodeProperty-Methode |
|
Execute-Methode |
|
Execute-Methode |
|
Execute-Methode |
|
Site-Eigenschaft |
|
Add-Methoden |
|
Manifest-Eigenschaft |
|
Xml-Eigenschaft |
|
Execute-Methode |
|
SignatureBlockXmlNode-Eigenschaft |
|
SignatureContainer-Eigenschaft |
|
GetContextNodes-Methoden |
|
SelectNodes-Methoden |
|
SelectText-Methoden |
|
Execute-Methode |
|
GenerateDataSetDiffGram-Methode |
|
OldParent-Eigenschaft |
|
Site-Eigenschaft |
|
MainDataSource-Eigenschaft, die ein DataSource-Objekt zurückgibt, das wiederum die CreateNavigator-Methode zum Erstellen eines XPathNavigator-Objekts am Stamm des dem Formular zugrunde liegenden XML-Dokuments (Hauptdatenquelle) bereitstellt. |
|
MergeForm-Methode |
|
NewFromFormTemplate-Methode |
|
ReportError-Methoden |
Neben den InfoPath-Objektmodellmembern, die ein XPathNavigator-Objekt zurückgeben oder annehmen, geben die folgenden Methoden eine Instanz der XPathNodeIterator-Klasse des System.Xml.XPath-Namespace zum Durchlaufen der XML-Knoten von Elementen zurück, die in einer Ansicht angegeben oder ausgewählt werden.
Übergeordnete Klasse | Member |
---|---|
View |
GetContextNodes-Methoden |
GetSelectedNodes-Methode |
Weitere Informationen zu den Eigenschaften und Methoden der Klassen XPathNavigator und XPathNodeIterator finden Sie in der .NET Framework-Referenzdokumentation.
Verwenden der Klassen "XPathNavigator" und "XPathNodeIterator" für in einer Ansicht ausgewählte Daten
Im folgenden Beispiel werden Member der Klassen XPathNavigator und XPathNodeIterator für Formulardaten in der folgenden Reihenfolge verwendet:
Die CreateNavigator-Methode der DataSource-Klasse dient zum Erstellen einer XPathNavigator-Objektvariablen mit dem Namen repeatingTableRow1, die sich standardmäßig am Stamm des dem Formular zugrunde liegenden XML-Dokuments (der Hauptdatenquelle) befindet.
Die SelectSingleNode-Methode der XPathNavigator-Klasse dient zum Verschieben der Position des XPathNavigator-Objekts in die erste Zeile des Steuerelements Wiederholte Tabelle, das an group2 in der Datenquelle gebunden ist.
Die repeatingTableRow1-Objektvariable wird an die SelectNodes-Methode der View-Klasse übergeben, um die Knoten in dieser Zeile auszuwählen.
Eine XPathNodeIterator-Objektvariable mit dem Namen selectedNodes wird deklariert, und die GetSelectedNodes-Methode der View-Klasse wird verwendet, um das XPathNodeIterator-Objekt mit den ausgewählten Knoten aufzufüllen.
Die Count-Eigenschaft der XPathNodeIterator-Klasse dient zum Anzeigen der Anzahl der Knoten, die in der selectedNodes-Objektvariablen enthalten sind.
Eine For/Each-Schleife dient zum Durchlaufen der Knoten in der selectedNodes-Objektvariablen und zum Anzeigen von Informationen zu den einzelnen Knoten mithilfe der Eigenschaften Name, InnerXml und Value der XPathNavigator-Klasse.
// Create XPathNavigator and specify XPath for nodes.
XPathNavigator repeatingTableRow1 =
MainDataSource.CreateNavigator().SelectSingleNode(
"/my:myFields/my:group1/my:group2[1]", NamespaceManager);
// Select nodes in specified XPathNavigator.
CurrentView.SelectNodes(repeatingTableRow1);
// Get selected nodes.
XPathNodeIterator selectedNodes =
CurrentView.GetSelectedNodes();
// Display the count of selected nodes.
MessageBox.Show(selectedNodes.Count.ToString());
// Loop through collection and display information.
foreach (XPathNavigator selectedNode in selectedNodes)
{
MessageBox.Show(selectedNode.Name);
MessageBox.Show(selectedNode.InnerXml);
MessageBox.Show(selectedNode.Value);
}
' Create XPathNavigator and specify XPath for nodes.
Dim repeatingTableRow1 As XPathNavigator = _
CreateNavigator().SelectSingleNode( _
"/my:myFields/my:group1/my:group2[1]", NamespaceManager)
' Select nodes in specified XPathNavigator.
CurrentView.SelectNodes(repeatingTableRow1)
' Get selected nodes.
Dim selectedNodes As XPathNodeIterator = _
CurrentView.GetSelectedNodes()
' Display the count of selected nodes.
MessageBox.Show(selectedNodes.Count.ToString())
' Loop through collection and display information.
Dim selectedNode As XPathNavigator
For Each selectedNode In selectedNodes
MessageBox.Show(selectedNode.Name)
MessageBox.Show(selectedNode.InnerXml)
MessageBox.Show(selectedNode.Value)
Next