2013-10-24 1 views
1

:을 XmlDocument의 createElement 내가 다음 코드에서 C#을 XMLDocument 클래스를 사용하여 이베이 FindingAPI 웹 서비스에 SOAP 요청을 구성하기 위해 노력하고있어

XmlDocument doc = new XmlDocument(); 
XmlElement root = (XmlElement)doc.AppendChild(doc.CreateElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope")); 
root.SetAttribute("xmlns", "http://www.ebay.com/marketplace/search/v1/services"); 
XmlElement header = (XmlElement)root.AppendChild(doc.CreateElement("soap", "Header", "http://www.w3.org/2003/05/soap-envelope")); 
XmlElement body = (XmlElement)root.AppendChild(doc.CreateElement("soap", "Body", "http://www.w3.org/2003/05/soap-envelope")); 
XmlElement request = (XmlElement)body.AppendChild(doc.CreateElement("findItemsByKeywordsRequest")); 
XmlElement param = (XmlElement)request.AppendChild(doc.CreateElement("keywords")); 
param.InnerText = "harry potter phoenix"; 

그리고, 위의 코드의 XML 출력 입니다 :

<soap:Envelope xmlns="http://www.ebay.com/marketplace/search/v1/services" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> 
    <soap:Header /> 
    <soap:Body> 
     <findItemsByKeywordsRequest xmlns=""> 
      <keywords>harry potter phoenix</keywords> 
     </findItemsByKeywordsRequest> 
    </soap:Body> 
</soap:Envelope> 

그러나,이 XML 때문에 여분의 xmlns = ""를 findItemsByKeywordsRequest 요소 속성의 서버에서 인식 할 수 없습니다. 원하는 XML 출력은 다음과 같아야합니다.

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.ebay.com/marketplace/search/v1/services"> 
    <soap:Header/> 
    <soap:Body> 
     <findItemsByKeywordsRequest> 
      <keywords>harry potter phoenix</keywords> 
     </findItemsByKeywordsRequest> 
    </soap:Body> 
</soap:Envelope> 

누구든지 내 코드의 문제점을 알고 있으며 어떤 힌트를 제공하십시오. 감사!

답변

5

문서에 가장 바깥 쪽 요소에 선언 된 기본 네임 스페이스가 있으므로 빈 항목을 추가하지 않으려면 모든 하위 요소에서 네임 스페이스를 반복해야합니다.

변경 requestparam 요소 선언을 포함하는 이들과 함께

XmlElement request = (XmlElement)body.AppendChild(doc.CreateElement("findItemsByKeywordsRequest", "http://www.ebay.com/marketplace/search/v1/services")); 
XmlElement param = (XmlElement)request.AppendChild(doc.CreateElement("keywords", "http://www.ebay.com/marketplace/search/v1/services")); 

이 코드는 XML 다음 생산하고 변경됩니다 "http://www.ebay.com/marketplace/search/v1/services" 네임 스페이스 :

<soap:Envelope xmlns="http://www.ebay.com/marketplace/search/v1/services" xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> 
    <soap:Header /> 
    <soap:Body> 
     <findItemsByKeywordsRequest> 
      <keywords>harry potter phoenix</keywords> 
     </findItemsByKeywordsRequest> 
    </soap:Body> 
</soap:Envelope> 
+0

오! 알았다. 고마워요! :디 – Elliott

관련 문제