Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Puede usar la función xpath para asignar un valor XPath a un elemento de mensaje o para asignar un valor a un XPath que hace referencia a una parte de mensaje. Para obtener más información sobre cómo asignar mensajes y elementos de mensaje, vea Construir mensajes.
Nota:
Para obtener más información sobre la función xpath, consulte la documentación de terceros sobre el lenguaje de ruta de acceso XML (XPath).
Nota:
El uso de la función xpath no se limita a la asignación de mensajes. También puede usarlo en cualquier expresión, por ejemplo:
If ((System.Double) xpath(_RequestMessage.part, "number(//book[last()]/price)") == 75.00 && (System.Boolean) xpath(msgBoolean, "string(//boolean)") == false)...
Nota:
Si desea asignar un valor a una cadena, use la función string() XPath. Por ejemplo:
myString = xpath(msg, "string(/*/book[1]/title)");
Nota:
El motor no es compatible con el esquema, por lo que solo puede leer valores de o escribir valores en un nodo que existe en el mensaje contenedor (la ruta de acceso completa debe existir) o el motor generará una excepción. Esto es cierto incluso si se proporciona un valor predeterminado.
Asignación a un XPath en una parte de un mensaje
Tenga en cuenta el esquema siguiente:
<?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>
Puede usar la función como se indica a continuación para establecer valores en una instancia de documento de ese tipo de esquema:
//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;
Asignación a un elemento de mensaje desde un 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'");
Uso de XPath para asignar a partir de nodos y conjuntos de nodos
También puede usar XPath para asignar nodos XML y conjuntos de nodos a un elemento XML, una clase o un mensaje basado en esquemas o basado en clases.
Supongamos que tiene una clase serializable XML denominada Book y tenga en cuenta los ejemplos siguientes:
[Serializable]
Class Book {...}
Ejemplo uno: seleccione el cuarto elemento book del catálogo y asígnelo a una variable de elemento XML:
myXmlElement = xpath(myMsg, "/catalog/book[3]");
Ejemplo dos: seleccione el cuarto elemento book del catálogo y conviértalo mediante la deserialización XML en una instancia de clase Book:
myBook = xpath(myMsg, "/catalog/book[3]");
Ejemplo tres: seleccione el cuarto elemento book del catálogo y conviértalo en un mensaje de tipo Book:
myBookMsg = xpath(myMsg, "/catalog/book[3]");
Ejemplo Cuatro: seleccione todos los elementos de libro del catálogo, donde MyMethod toma xmlNodeSet como parámetro:
MyMethod(xpath(myMsg, "/catalog/book"));
Ejemplo cinco: agregue un elemento "libro" al contenedor "BookOfTheMonth".
xpath(MyMsg2, "/RecommendedBooks/BookOfTheMonth") = myBook;
Ejemplo Seis: agregue todos los libros que tengan un precio de veinte o menos a un conjunto de libros recomendados:
xpath(MyMsg2, "/RecommendedBooks/BestPriceBooks") = xpath(MyMsg, "/catalog/book[@price <= 20]");
Ejemplo Siete: llamar al código de usuario que devuelve un elemento XML:
xpath(MyMsg2, "/RecommendedBooks/AdvertisedByPartner") = GetPartnerAdvertisedBook();
Antes de aplicar ejemplos cinco y siete:
<RecommendedBooks>
<BookOfTheMonth/>
<BestPriceBooks/>
<AdvertisedByPartner/>
</RecommendedBooks>
Después de aplicar ejemplos cinco y siete:
<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>