Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der xpath-Funktion können Sie einem Nachrichtenteil einen XPath-Wert zuweisen oder einem XPath-Element einen Wert zuweisen, der sich auf einen Nachrichtenteil bezieht. Weitere Informationen zum Zuweisen von Nachrichten und Nachrichtenteilen finden Sie unter Erstellen von Nachrichten.
Hinweis
Weitere Informationen zur xpath-Funktion finden Sie in Drittanbieterdokumentationen zur XML-Pfadsprache (XPath).
Hinweis
Die Verwendung der xpath-Funktion ist nicht auf die Nachrichtenzuweisung beschränkt. Sie können sie auch in einem beliebigen Ausdruck verwenden, z. B.:
If ((System.Double) xpath(_RequestMessage.part, "number(//book[last()]/price)") == 75.00 && (System.Boolean) xpath(msgBoolean, "string(//boolean)") == false)...
Hinweis
Wenn Sie einer Zeichenfolge einen Wert zuweisen möchten, verwenden Sie die XPath string()-Funktion. Beispiel:
myString = xpath(msg, "string(/*/book[1]/title)");
Hinweis
Das Modul ist nicht schemafähig, sodass Sie nur Werte aus einem Knoten lesen oder in einen Knoten schreiben können, der in der enthaltenden Nachricht vorhanden ist (der vollständige Pfad muss vorhanden sein), oder das Modul löst eine Ausnahme aus. Dies gilt auch dann, wenn Sie einen Standardwert angeben.
Zuweisen zu einem XPath in einem Nachrichtenteil
Berücksichtigen Sie das folgende Schema:
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string" />
<xs:element name="LastName" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:string" />
</xs:sequence>
<xs:attribute name="country" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Sie können die Funktion wie folgt verwenden, um Werte für eine Dokumentinstanz dieses Schematyps festzulegen:
//assumes that a message named _ResponseMessage is already constructed
_ResponseMessage.part = _RequestMessage.part;
xpath(_ResponseMessage.part, "/*/book[1]/@country") = "USA";
xpath(_ResponseMessage.part, "/*/book[1]/title") = "Legends";
xpath(_ResponseMessage.part, "/*/book[1]/author/FirstName") = "A";
xpath(_ResponseMessage.part, "/*/book[1]/author/LastName") = "B";
xpath(_ResponseMessage.part, "/*/book[1]/price") = 50;
Zuordnen eines Nachrichtenteils über einen XPath
//assumes that a message named objMessage is already constructed
objMessage.BooleanPart = xpath("false()");
objMessage.IntPart = xpath("100");
objMessage.StringPart = xpath("'Hello'");
objMessage.StringPart2 = xpath("'World'");
Verwenden von XPath zum Zuweisen von Knoten und Knotensätzen
Sie können XPath auch verwenden, um XML-Knoten und Knotensätze einem XML-Element, einer Klasse oder einer schemabasierten oder klassenbasierten Nachricht zuzuweisen.
Angenommen, Sie haben eine XML-serialisierbare Klasse namens Book, und betrachten Sie die folgenden Beispiele:
[Serializable]
Class Book {...}
Beispiel 1 – Wählen Sie das vierte Buchelement aus dem Katalog aus, und weisen Sie es einer XML-Elementvariable zu:
myXmlElement = xpath(myMsg, "/catalog/book[3]");
Beispiel 2 – Wählen Sie das vierte Buchelement aus dem Katalog aus, und konvertieren Sie es mithilfe der XML-Deserialisierung in eine Book-Klasseninstanz:
myBook = xpath(myMsg, "/catalog/book[3]");
Beispiel 3 – Wählen Sie das vierte Buchelement aus dem Katalog aus, und konvertieren Sie es in eine Nachricht vom Typ "Book":
myBookMsg = xpath(myMsg, "/catalog/book[3]");
Beispiel Vier – Wählen Sie alle Buchelemente im Katalog aus, wobei MyMethod ein XmlNodeSet als Parameter verwendet:
MyMethod(xpath(myMsg, "/catalog/book"));
Beispiel 5 – Fügen Sie dem Container "BookOfTheMonth" ein Buchelement hinzu:
xpath(MyMsg2, "/RecommendedBooks/BookOfTheMonth") = myBook;
Beispiel 6 – Fügen Sie alle Bücher hinzu, die 20 oder weniger kosten, zu einer Sammlung empfohlener Bücher.
xpath(MyMsg2, "/RecommendedBooks/BestPriceBooks") = xpath(MyMsg, "/catalog/book[@price <= 20]");
Beispiel sieben – Aufrufen von Benutzercode, der ein XML-Element zurückgibt:
xpath(MyMsg2, "/RecommendedBooks/AdvertisedByPartner") = GetPartnerAdvertisedBook();
Vor dem Anwenden von Beispielen fünf und sieben:
<RecommendedBooks>
<BookOfTheMonth/>
<BestPriceBooks/>
<AdvertisedByPartner/>
</RecommendedBooks>
Nach dem Anwenden von Beispielen fünf und sieben:
<RecommendedBooks>
<BookOfTheMonth>
<Book country="USA">
<title>McSharry</title>
<author>
<FirstName>Nancy</FirstName>
<LastName>Jensen</LastName>
</author>
</Book>
</BookOfTheMonth>
<BestPriceBooks/>
<AdvertisedByPartner>
<Book country="USA">
<title>The Rooster</title>
<author>
<FirstName>Mindy</FirstName>
<LastName>Martin</LastName>
</author>
</Book>
</AdvertisedByPartner>
</RecommendedBooks>