我正在努力使用正确的方法声明来接受整个XML请求而没有很多参数(我有大约50个字段和子结构通过Web服务发送)。
处理Web服务请求的最佳/最简单方法是什么? 例如。我想创建一个处理XML文件的Web服务方法,如下所示:
<MXPOSet>
<PO action="Replace">
<ALLOWRECEIPT>1</ALLOWRECEIPT>
<BILLTO />
<BILLTOATTN />
<BUYAHEAD>0</BUYAHEAD>
<BUYER>KRISHNAMURTHYP</BUYER>
<BUYERCOMPANY />
<POLINE>
<ASSETNUM />
<CATALOGCODE />
<POCOST>
<COSTLINENUM>1</COSTLINENUM>
<LINECOST>520.0</LINECOST>
<QUANTITY>1.0</QUANTITY>
</POCOST>
</POLINE>
<POLINE>
<ASSETNUM />
<CATALOGCODE />
<POCOST>
<COSTLINENUM>2</COSTLINENUM>
<LINECOST>520.0</LINECOST>
<QUANTITY>2.0</QUANTITY>
</POCOST>
</POLINE>
<POTERM>
<DESCRIPTION>An acceptance of this order</DESCRIPTION>
<TERMID>ITTS-PU-002</TERMID>
</POTERM>
</PO>
</MXPOSet>
如何在没有方法标题的情况下处理这些数据,如:
<WebMethod()> _
Public Function DoImport(p1,p2,p3......)
答案 0 :(得分:0)
您可以将其作为字符串接收并在Web方法中解析吗?
[WebMethod]
public bool ImportXML(string xmldoc)
{
/* parse string to XML objects*/
}
这是更多的工作,但你可以将它映射到一个类。请参阅MSDN。
E.g。对于XML:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<SubmitClass
xmlns="http://msdn.microsoft.com/AYS/XEService">
<input>
<child1>foo</child1>
<child2>bar</child2>
</input>
</SubmitClass>
</soap:Body>
</soap:Envelope>
这样可行:
public class MyClass
{
public string child1;
public string child2;
}
[WebMethod]
public void SubmitClass(MyClass input)
{
// Do something with complex input parameters
return;
}
[WebMethod]
public void SubmitXml(XmlElement input)
{
return;
}
有关MSDN文章的详细信息。