내가 xml을 얻을 때, 나는 그것을 특수 객체에 deserialize하고 웹 서비스 메소드의 매개 변수를 통해 전달해야한다.개체를 deserialize하는 비누 재료를 무시하는 방법?
코드 :
var document = new XmlDocument();
document.Load(@"C:\Desktop\CteWebservice.xml");
var serializer = new XmlSerializer(typeof(OCTE));
var octe = (OCTE) serializer.Deserialize(new StringReader(document.OuterXml));
serviceClient.InsertOCTE(octe);
하지만 역 직렬화 할 때 나는 봉투 태그와 다른 SOAP 물건을 무시해야 할
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > was not expected.
라는 오류가 발생합니다. 어떻게 할 수 있습니까?
편집 :
XML 파일 :
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns="http://192.168.1.180:8085/">
<soapenv:Header/>
<soapenv:Body>
<ns:INCLUIRCONHECIMENTOFRETESAIDA>
<ns:CONHECIMENTOFRETE>
<ns:CSTICMS></ns:CSTICMS>
</ns:CONHECIMENTOFRETE>
</ns:INCLUIRCONHECIMENTOFRETESAIDA>
<soapenv:Body>
시험 코드 :
XNamespace soap = "http://schemas.xmlsoap.org/soap/envelope/";
XNamespace m = "http://192.168.1.180:8085/";
var soapBody = xdoc.Descendants(soap + "Body").First().FirstNode;
var serializer = new XmlSerializer(typeof(OCTE));
var responseObj = (OCTE)serializer.Deserialize(soapBody.CreateReader());
의 SOAPBody 내가 필요로하는 모든 정보로 가져옵니다. 하지만 내가 responseObj에 그것을 deserialize 할 때 나는 모든 값을 null로 얻는다.
'XDocument'를 사용하고'document.Descendant ("OCTE")'를합니까? (또는 루트 이름이 무엇이든간에) –
XmlDocument 클래스에서이 멤버를 찾을 수 있는지 여부를 나타내는 하위 항목입니다. – gog
맞아, 나는'XDocument'와 혼동했다. 대신 그 수업을 사용할 수 있습니까? 어느 쪽이든, 나는 XML 트리를 네 몸의 가치로 이동시키는 방법이 있다고 확신한다. –