2013-10-02 12 views
6

Tôi đang đặt giá trị của một phần tử bên trong hình dạng Chuyển nhượng thư của một Dàn nhạc. Tôi đang sử dụng chức năng XPATH để thực hiện.BizTalk - CDATA trong hình dạng gán thông báo

Văn bản cần được chứa bên trong phần CDATA. Đây là cách tôi đã cố gắng để làm điều đó:

xpath(messageOut, "//Envelope/Body/MsgFFmt") = @"<![CDATA[" + _response + @"]]>"; 

Tuy nhiên, BizTalk thoát nó và các văn bản bên nguyên tố này kết thúc lên tim như thế này:

<MsgFFmt>&lt;![CDATA[response content goes here]]&gt;</MsgFFmt> 

tôi dường như không thể tìm thấy bất cứ điều gì trên web liên quan đến hướng dẫn BizTalk rằng tôi cần một phần CDATA xung quanh chuỗi _response của tôi. Ai cũng có thể giúp?

Cảm ơn

+1

Có bạn thấy blog này? http://soa-thoughts.blogspot.co.nz/2007/07/cdata-mapping-experience-inside-biztalk.html – Dijkgraaf

+0

Cảm ơn! Tôi đã thực hiện một cái gì đó tương tự như những gì đã được thể hiện trong bài viết; đó là những gì tôi cần! – gmang

Trả lời

6

Tôi sẽ trả lời câu hỏi của riêng mình để chia sẻ câu hỏi trong trường hợp ai đó đang tìm kiếm. Điều này đã được dựa trên bài đăng này: http://soa-thoughts.blogspot.co.nz/2007/07/cdata-mapping-experience-inside-biztalk.html

tôi đã kết thúc việc tạo ra một lớp Helper:

public class MessageHelper 
{ 
    /// <summary> 
    /// Sets a CDATA section in a XLANG message. 
    /// </summary> 
    /// <param name="message">The xlang message.</param> 
    /// <param name="xPath">The xpath for the element which will contain the CDATA section.</param> 
    /// <param name="value">The contents of the CDATA section.</param> 
    /// <returns>The resulting xml document containing the CDATA section</returns> 
    public static XmlDocument SetCDATASection(XLANGMessage message, string xPath, string value) 
    { 
     if (message == null) 
      throw new ArgumentNullException("message"); 

     if (message[0] == null) 
      throw new ArgumentNullException("message[0]"); 

     var xmlDoc = (XmlDocument)message[0].RetrieveAs(typeof(XmlDocument)); 

     var cdataSection = xmlDoc.CreateCDataSection(value); 
     var node = xmlDoc.SelectSingleNode(xPath); 

     if(node !=null) 
     { 
      node.InnerText = String.Empty; 
      node.AppendChild(cdataSection); 
     } 

     return xmlDoc; 
    } 
} 

Đây là cách bạn gọi nó là từ hình dạng sau khi DLL là GAC:

MessageOut = MessageHelper.SetCDATASection(MessageOut, "/Envelope/Body/MsgFFmt", _string); 
Các vấn đề liên quan