title: Extract SOAP body from a SOAP message
body: <p>I want to extract SOAP body from a SOAP message, I have some data in SOAP body that I have to parse in date base, so this is the code:</p>
  
  <pre><code>public string Load_XML(string SoapMessage)
  {
      //check soap message
      if (SoapMessage == null || SoapMessage.Length &lt;= 0)
          throw new Exception("Soap message not valid");
  
      //declare some local variable
      int iSoapBodyStartIndex = 0;
      int iSoapBodyEndIndex = 0;
  
      //load the Soap Message
      //Učitaj string XML-a i pretvori ga u XML
      XmlDocument doc = new XmlDocument();
  
      try
      {
          doc.Load(SoapMessage);
      }
  
      catch (XmlException ex)
      {
          WriteErrors.WriteToLogFile("WS.LOAD_DOK_LoadXML", ex.ToString());
  
          throw ex;
      }
  
      //search for the "http://schemas.xmlsoap.org/soap/envelope/" URI prefix
      string prefix = string.Empty;
      for (int i = 0; i &lt; doc.ChildNodes.Count; i++)
      {
          System.Xml.XmlNode soapNode = doc.ChildNodes[i];
          prefix = soapNode.GetPrefixOfNamespace("http://schemas.xmlsoap.org  /soap/envelope/");
  
          if (prefix != null &amp;&amp; prefix.Length &gt; 0)
              break;
      }
  
      //prefix not founded. 
      if (prefix == null || prefix.Length &lt;= 0)
          throw new Exception("Can't found the soap envelope prefix");
  
      //find soap body start index
      int iSoapBodyElementStartFrom = SoapMessage.IndexOf("&lt;" + prefix + ":Body");
      int iSoapBodyElementStartEnd = SoapMessage.IndexOf("&gt;", iSoapBodyElementStartFrom);    -&gt; HERE I HAVE AN ERROR!!!!   
      iSoapBodyStartIndex = iSoapBodyElementStartEnd + 1;
  
      //find soap body end index
      iSoapBodyEndIndex = SoapMessage.IndexOf("&lt;/" + prefix + ":Body&gt;") - 1;
  
      //get soap body (xml data)
      return SoapMessage.Substring(iSoapBodyStartIndex, iSoapBodyEndIndex - iSoapBodyStartIndex + 1);
  }
  </code></pre>
  
  <p>I got an error here:</p>
  
  <pre><code>int iSoapBodyElementStartEnd = SoapMessage.IndexOf("&gt;", iSoapBodyElementStartFrom); 
  </code></pre>
  
  <p>The error:</p>
  
  <blockquote>
    <p>Index was out of range. Must be non-negative and less than the size of
    the collection.</p>
  </blockquote>
  
  <p>If anyone knows how to solve this?</p>