简体   繁体   中英

xmlns=“” is unwantedly being added

Following is my XML request, I am a beginner.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="http://www.juniper.es/webservice/2007/">
<soapenv:Header/>
<soapenv:Body>
<HotelAvail>
<HotelAvailRQ Version="1.1" Language="en">
<Login Email="user@mydomain.com" Password="pass" />
<Paxes>
<Pax IdPax="1">
<Age>8</Age>
</Pax> 
</Paxes> 
<HotelRequest> 
<SearchSegmentsHotels> 
<SearchSegmentHotels Start="2013-08-20" End="2013-08-22" DestinationZone="1953"/> 
<CountryOfResidence>ES</CountryOfResidence> 
<Boards> 
<Board Type="AD"/> 
</Boards> 
</SearchSegmentsHotels> 
<RelPaxesDist> 
<RelPaxDist> 
<RelPaxes> 
<RelPax IdPax="1"/> 
</RelPaxes> 
</RelPaxDist> 
</HotelRequest> 
<AdvancedOptions> 
<ShowHotelInfo>true</ShowHotelInfo> 
</AdvancedOptions> 
</HotelAvailRQ> 
</HotelAvail> 
</soapenv:Body> 
</soapenv:Envelope>

I am trying to create c# request for this but i am getting xmlns="" in Hotelavail tag which i do not want.

//Declaration
          const string SOAPENV_NS = "http://schemas.xmlsoap.org/soap/envelope/";
          const string WKSP_NS = "http://www.juniper.es/webservice/2007/";
          XmlDeclaration xmlDeclaration = XMLDoc1.CreateXmlDeclaration("1.0", "utf-16", null);
            //root
            XMLsoapenv = XMLDoc1.CreateElement("soapenv", "Envelope", SOAPENV_NS);
            XMLsoapenv.SetAttribute("xmlns:soapenv", SOAPENV_NS);
            XMLsoapenv.SetAttribute("xmlns", WKSP_NS);
            //XMLDoc1.AppendChild(XMLsoapenv);
            //header
            XMLsoapenvHeader = XMLDoc1.CreateElement("soapenv", "Header", SOAPENV_NS);
            XMLsoapenv.AppendChild(XMLsoapenvHeader);
            XMLsoapenvBody = XMLDoc1.CreateElement("soapenv", "Body", SOAPENV_NS);
            XMLsoapenv.AppendChild(XMLsoapenvBody);
            //XMLDoc1.AppendChild(XMLsoapenv);
            XMLHotelAvail = XMLDoc1.CreateElement("HotelAvail");
            XMLHotelAvailRQ = XMLDoc1.CreateElement("HotelAvailRQ");
            XMLHotelAvailRQ.SetAttribute("Version", "1.1");
            XMLHotelAvailRQ.SetAttribute("Language", language1);
            XMLLogin = XMLDoc1.CreateElement("Login");
            XMLLogin.SetAttribute("Email", email);
            XMLLogin.SetAttribute("Password", password);
            XMLHotelAvailRQ.AppendChild(XMLLogin);
            XMLPaxes = XMLDoc1.CreateElement("Paxes");
            XMLPaxFirstChild = XMLDoc1.CreateElement("Pax");
            XMLPaxFirstChild.SetAttribute("IdPax", "1");
            XMLPaxFirstChild.SetAttribute("Age", searchCriteria.FirstChild);
            XMLPaxes.AppendChild(XMLPaxFirstChild);
            XMLHotelAvailRQ.AppendChild(XMLPaxes);
            XMLHotelRequest = XMLDoc1.CreateElement("HotelRequest");
            XMLSearchSegmentsHotels = XMLDoc1.CreateElement("SearchSegmentsHotels");
            XMLSearchSegmentHotels = XMLDoc1.CreateElement("SearchSegmentHotels");
            XMLSearchSegmentHotels.SetAttribute("Start", searchCriteria.CheckInDate);
            XMLSearchSegmentHotels.SetAttribute("End", searchCriteria.CheckOutDate);
            XMLSearchSegmentHotels.SetAttribute("DestinationZone", "628");
            XMLCountryOfResidence = XMLDoc1.CreateElement("CountryOfResidence", searchCriteria.Country);
            XMLSearchSegmentHotels.AppendChild(XMLCountryOfResidence);
            XMLSearchSegmentsHotels.AppendChild(XMLSearchSegmentHotels);
            XMLHotelRequest.AppendChild(XMLSearchSegmentsHotels);
            XMLRelPaxesDist = XMLDoc1.CreateElement("RelPaxesDist");
            XMLRelPaxDist = XMLDoc1.CreateElement("RelPaxDist");
            XMLRelPaxes = XMLDoc1.CreateElement("RelPaxes");
            XMLRelPax = XMLDoc1.CreateElement("RelPax");
            XMLRelPax.SetAttribute("IdPax", "1");
            XMLRelPaxes.AppendChild(XMLRelPax);
            XMLRelPaxDist.AppendChild(XMLRelPaxes);
            XMLRelPaxesDist.AppendChild(XMLRelPaxDist);
            XMLHotelRequest.AppendChild(XMLRelPaxesDist);
            XMLHotelAvailRQ.AppendChild(XMLHotelRequest);
            XMLHotelAvail.AppendChild(XMLHotelAvailRQ);
            XMLsoapenv.AppendChild(XMLHotelAvail);
            //XMLsoapenvBody.AppendChild(XMLHotelAvail);
            //XMLsoapenv.AppendChild(XMLsoapenvBody);
            XMLDoc1.AppendChild(XMLsoapenv);

I have tried giving "SOAPENV_NS" in Hotelavail tag as I read it somewhere so xmlns="" wouldn't be added but no use I get the url as well.

Any help would be much appreciated.

You're implicitly creating HotelAvail and all its children with an empty namespace (as you don't specify one in your calls to CreateElement ).

The 'default' namespace is defined in the root of your XML by xmlns="http://www.juniper.es/webservice/2007/" .

Change your CreateElement calls for HotelAvail and children to:

XMLDoc1.CreateElement("HotelAvail", WKSP_NS);

See this fiddle for a working demo.

As an aside, I'd agree with Jon Skeet that you should probably investigate LINQ to XML rather than using the old XmlDocument API. It's much nicer to work with.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM