Results 1 to 1 of 1

Thread: How do I check if section/subdivision exist and add their value into a xml doc?

  1. #1

    Thread Starter
    Member
    Join Date
    Sep 2013
    Posts
    43

    How do I check if section/subdivision exist and add their value into a xml doc?

    In my function GetStatutesByChapter, I would like to check if there is a section and or if there is a subdivion in the object aobjXmlGetStatuteRequestNode.
    The reason I am checking is that these are optional so they may or may not be present.
    I only want to create (add) them in object objXmlRequestMessageDoc only when they exist.
    If the section and or subdivision exist, I want to add their value into the Object objXmlRequestMessageDoc.

    Object aobjXmlGetStatuteRequestNode has this xml in it.
    Code:
    <ns:GetStatutesRequest xmlns:ns="http://www.courts.state.mn.us/StatuteService/1.0">
    	<ns:Statute>
    		<ns:Chapter>169</ns:Chapter>
                    <!--Optional:-->
    		<ns:Section>191</ns:Section>
                    <!--Optional:-->
    		<ns:Subdivision>a</ns:Subdivision>
    	</ns:Statute>
    </ns:GetStatutesRequest>
    objXmlRequestMessageDoc object's xml should look like this if both section and subdivion are found in the aobjXmlGetStatuteRequestNode object and after they have been added.
    Code:
    <ns:BasicSearchQueryRequest xmlns:ns="http://crimnet.state.mn.us/mnjustice/statute/service/4.0">
    	<ns1:BasicSearchCriteria xmlns:ns1="http://crimnet.state.mn.us/mnjustice/statute/messages/4.0">
    		<ns2:Chapter xmlns:ns2="http://crimnet.state.mn.us/mnjustice/statute/4.0"/169</ns2:Chapter>>
    		<ns2:Section xmlns:ns2="http://crimnet.state.mn.us/mnjustice/statute/4.0"/>191</ns2:Chapter>
    		<ns2:Subdivision xmlns:ns2="http://crimnet.state.mn.us/mnjustice/statute/4.0"/>a</ns2:Chapter>
    	</ns1:BasicSearchCriteria>
    </ns:BasicSearchQueryRequest>
    If there is no section and or subdivion my objXmlRequestMessageDoc object will only have the chapter in it because chapter is not optional.
    xml would look like this
    Code:
    <ns:BasicSearchQueryRequest xmlns:ns="http://crimnet.state.mn.us/mnjustice/statute/service/4.0">
    	<ns1:BasicSearchCriteria xmlns:ns1="http://crimnet.state.mn.us/mnjustice/statute/messages/4.0">
    		<ns2:Chapter xmlns:ns2="http://crimnet.state.mn.us/mnjustice/statute/4.0"/169</ns2:Chapter>>
    	</ns1:BasicSearchCriteria>
    </ns:BasicSearchQueryRequest>
    Here is my function
    Code:
    ''' <summary>
            ''' Process Get Statutes by Chapter
            ''' </summary>
            ''' <returns>Returns Chapter string in the objXmlStatutesDoc.</returns>
            ''' <remarks>Both Section and Subdivision are optional. Check if they exist</remarks>
            Function GetStatutesByChapter(ByVal aobjXmlGetStatuteRequestNode As XmlNode, ByVal aobjXMLNameSpaceManager As XmlNamespaceManager, ByVal aobjBroker As ServiceCatalog.Library.v4.Broker) As XmlDocument
                Dim objXmlRequestMessageDoc As XmlDocument
                Dim objXmlResponseMessageDoc As XmlDocument
                Dim intCount As Integer
                aobjBroker.PostMessageWarehouseInformationalMessage("Chapter found.", 1)
    
    			'set up the namespace manager
                objNameTable = New Xml.NameTable
                objXMLNameSpaceManager = New Xml.XmlNamespaceManager(objNameTable)
                objXMLNameSpaceManager.AddNamespace("soap", Msc.Integration.Utility.Library.v4.Soap.NamespaceUri(aobjBroker.SoapMessageVersion))
                objXMLNameSpaceManager.AddNamespace("wsa", Msc.Integration.Utility.Library.v4.Soap.WsaNamespaceUri(aobjBroker.SoapMessageVersion))
                objXMLNameSpaceManager.AddNamespace("ns1", "http://crimnet.state.mn.us/mnjustice/statute/messages/4.0")
                objXMLNameSpaceManager.AddNamespace("st", "http://crimnet.state.mn.us/mnjustice/statute/4.0")
                objXMLNameSpaceManager.AddNamespace("ss", "http://www.courts.state.mn.us/StatuteService/1.0")
                objXMLNameSpaceManager.AddNamespace("ns", "http://crimnet.state.mn.us/mnjustice/statute/service/4.0")
    			            objXmlResponseMessageDoc = New XmlDocument
                'Add the first element into the document GetStatuteByChapter with its namespace
                objXmlResponseMessageDoc.AppendChild(objXmlResponseMessageDoc.CreateElement("BasicSearchQueryResponse", "http://crimnet.state.mn.us/mnjustice/statute/service/4.0"))
                objXmlResponseMessageDoc = New XmlDocument
                'Add the first element into the document GetStatutesResponse with its namespace
                objXmlResponseMessageDoc.AppendChild(objXmlResponseMessageDoc.CreateElement("GetStatutesResponse", "http://www.courts.state.mn.us/StatuteService/1.0"))
                'Add a child node to the GetStatutesResponse node
                objXmlResponseMessageDoc.SelectSingleNode("ss:GetStatutesResponse", aobjXMLNameSpaceManager).AppendChild(objXmlResponseMessageDoc.CreateElement("StatutesXml", "http://www.courts.state.mn.us/StatuteService/1.0"))
                objXmlResponseMessageDoc.SelectSingleNode("ss:GetStatutesResponse/ss:StatutesXml", aobjXMLNameSpaceManager).AppendChild(objXmlResponseMessageDoc.CreateElement("Statutes", "http://www.courts.state.mn.us/StatuteService/1.0"))
                'Convert the node Statutes into an element and set the runType attribute (runType="Request") by adding it's value Request 
                CType(objXmlResponseMessageDoc.SelectSingleNode("ss:GetStatutesResponse/ss:StatutesXml/ss:Statutes", aobjXMLNameSpaceManager), System.Xml.XmlElement).SetAttribute("runType", "Request")
                'Convert the node Statutes into an element and set the attribute (runDateTime="2015-03-05T10:29:40") by adding it 
                CType(objXmlResponseMessageDoc.SelectSingleNode("ss:GetStatutesResponse/ss:StatutesXml/ss:Statutes", aobjXMLNameSpaceManager), System.Xml.XmlElement).SetAttribute("runDateTime", Format(Now, "yyyy-MM-ddTHH:mm:ss"))
               'check if there is a section and or subdivision if they exist add them and their value to the objXmlRequestMessageDoc
                If  Then
                'Add code here to check for Section and Subdivision. If they exist add their value to the objXmlRequestMessageDoc object like the way you added Chapter     
                End If
                objXmlRequestMessageDoc.SelectSingleNode("ns:BasicSearchQueryRequest/ns1:BasicSearchCriteria", aobjXMLNameSpaceManager).AppendChild(objXmlRequestMessageDoc.CreateElement("ns2:Subdivision", aobjXMLNameSpaceManager.LookupNamespace("st")))
                objXmlRequestMessageDoc.DocumentElement.SelectSingleNode("ns1:BasicSearchCriteria/st:Chapter", aobjXMLNameSpaceManager).InnerText = aobjXmlGetStatuteRequestNode.SelectSingleNode("ss:Statute/ss:Chapter", aobjXMLNameSpaceManager).InnerText
                aobjBroker.PostMessageWarehouseSnapshot(objXmlRequestMessageDoc.OuterXml, "Request Message", 1)
                Return objXmlResponseMessageDoc
            End Function
    If statement does not work because once it finds the first element (Section) it does not check for the second one (Subdivision) but it should.
    What's the best way to do this?
    Last edited by winkimjr2; Mar 13th, 2015 at 02:59 PM. Reason: I think I need to use For each to see if there is a Section and if there is a Subdivision

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width