2013-02-05 2 views
2

저는 C#의 webservices에 새로운 기능을 제공합니다. 내가 url 매개 변수에 의해 지정된 웹 서비스의을 XmlDocument로이 XML을 읽을 어떻게 지금C# webservice에 게시 된 XML 파일 읽기

public static XmlDocument PostXMLTransaction(string URL, XmlDocument XMLDoc) 
     { 
      //Declare XMLResponse document 
     XmlDocument XMLResponse = null; 

     //Declare an HTTP-specific implementation of the WebRequest class. 
     HttpWebRequest objHttpWebRequest; 

    //Declare an HTTP-specific implementation of the WebResponse class 
    HttpWebResponse objHttpWebResponse = null; 

    //Declare a generic view of a sequence of bytes 
    Stream objRequestStream = null; 
    Stream objResponseStream = null; 

    //Declare XMLReader 
    XmlTextReader objXMLReader; 

    //Creates an HttpWebRequest for the specified URL. 
    objHttpWebRequest = (HttpWebRequest)WebRequest.Create(URL); 

    try 
    { 
     //---------- Start HttpRequest 

     //Set HttpWebRequest properties 
     byte[] bytes; 
     bytes = System.Text.Encoding.ASCII.GetBytes(XMLDoc.InnerXml); 
     objHttpWebRequest.Method = "POST"; 
     objHttpWebRequest.ContentLength = bytes.Length; 
     objHttpWebRequest.ContentType = "text/xml; encoding='utf-8'"; 

     //Get Stream object 
     objRequestStream = objHttpWebRequest.GetRequestStream(); 

     //Writes a sequence of bytes to the current stream 
     objRequestStream.Write(bytes, 0, bytes.Length); 

     //Close stream 
     objRequestStream.Close(); 

     //---------- End HttpRequest 

     //Sends the HttpWebRequest, and waits for a response. 
     objHttpWebResponse = (HttpWebResponse)objHttpWebRequest.GetResponse(); 

     //---------- Start HttpResponse 
     if (objHttpWebResponse.StatusCode == HttpStatusCode.OK) 
     { 
      //Get response stream 
      objResponseStream = objHttpWebResponse.GetResponseStream(); 

      //Load response stream into XMLReader 
      objXMLReader = new XmlTextReader(objResponseStream); 

      //Declare XMLDocument 
      XmlDocument xmldoc = new XmlDocument(); 
      xmldoc.Load(objXMLReader); 

      //Set XMLResponse object returned from XMLReader 
      XMLResponse = xmldoc; 

      //Close XMLReader 
      objXMLReader.Close(); 
     } 

     //Close HttpWebResponse 
     objHttpWebResponse.Close(); 
    } 
    catch (WebException we) 
    { 
     //TODO: Add custom exception handling 
     throw new Exception(we.Message); 
    } 
    catch (Exception ex) 
    { 
     throw new Exception(ex.Message); 
    } 
    finally 
    { 
     //Close connections 
     objRequestStream.Close(); 
     objResponseStream.Close(); 
     objHttpWebResponse.Close(); 

     //Release objects 
     objXMLReader = null; 
     objRequestStream = null; 
     objResponseStream = null; 
     objHttpWebResponse = null; 
     objHttpWebRequest = null; 
    } 
    //Return 
    return XMLResponse; 
} 

:

나는 다음과 같은 기능을 가진 웹 서비스로는 XML을 기록했다. 웹 서비스에 데이터를 게시 할 수 있는지 확실하지 않습니다. 내가 틀렸다면 수정하십시오.

xml을 aspx 페이지에는 게시 할 수 있지만 서비스에는 게시하지 않았습니다.

답변

1
나는이 입력 스트림을 읽어

[WebMethod] 
public string sendXliff() 
{ 
    XmlDocument xmldoc = new XmlDocument(); 
    //if (Request.InputStream != null) 
    if(HttpContext.Current.Request.InputStream!=null) 
    { 

     StreamReader stream = new StreamReader(HttpContext.Current.Request.InputStream); 
     string xmls = stream.ReadToEnd(); // added to view content of input stream 
     //XDocument xmlInput = XDocument.Parse(xmls); 
     xmldoc.LoadXml(xmls); 
     XmlReaderSettings settings = new XmlReaderSettings(); 
     settings.Schemas.Add(null, "XSD LOCATION"); 
     settings.ValidationType = ValidationType.Schema; 
     XmlReader rdr = XmlReader.Create(new StringReader(xmldoc.InnerXml), settings); 
     while (rdr.Read()) { } 
    } 
    try 
    { 
     XmlNodeList xmlnode = xmldoc.GetElementsByTagName("ID"); 
     var sid = xmlnode[0].FirstChild.Value; 
    } 
    catch (Exception ex) 
    { 
    } 

    return "OK"; 
} 

솔루션을 가지고

를 사용하는 경우 XmlNode

XmlDocument xmldoc = PostXMLTransaction(string URL, XmlDocument XMLDoc) // call to your code for xml document 
XmlNode node= xmldoc.SelectSingleNode("you xml node path here"); 
if(node != null) 
{ 
    var str = node.InnerText; 
} 

를 사용하고있는 경우 XmlDocument로 데이터를 읽습니다. 그리고 나서 이것으로 XML을 파싱 할 수 있습니다.

0

다음은 XML 문서를 읽는 간단한 예제입니다. 그것은 하나의 노드가 다음 변환 다음은 노드 목록 다음 XmlNodeList

XmlNodeList nodes = xmlDoc.SelectNodes("you xml node path here"); 
if(nodes != null) 
{ 
    foreach (XmlNode node in nodes) 
    { 
     --code here 
    } 
} 
+0

고마워요,이게 필요했지만 웹 서비스에서이 게시 된 XML 문서를 읽는 방법을 알고 싶습니다. –

+0

당신은 무엇을 의미합니까? 응답 후 한 번 읽으시겠습니까? – DON

+0

응답 후, 내가 볼 수 있듯이 웹 서비스에 XML 파일을 게시 할 때 서비스에서이 XML을 읽어야합니다. –