C# 通过节点从外部web服务解析捕获xml

C# 通过节点从外部web服务解析捕获xml,c#,.net,xml,web-services,C#,.net,Xml,Web Services,我有一个c#web应用程序,它有一个简单的任务:使用一个外部web服务,并遍历其返回的xml 我使用的web服务如下所示: WSExternal.SoapHeaderCredentials objHeaderCredentials = new WSExternal.SoapHeaderCredentials(); objHeaderCredentials.UserName = "username"; objHeaderCredentials.Password =

我有一个c#web应用程序,它有一个简单的任务:使用一个外部web服务,并遍历其返回的xml

我使用的web服务如下所示:

 WSExternal.SoapHeaderCredentials objHeaderCredentials = new WSExternal.SoapHeaderCredentials();
        objHeaderCredentials.UserName = "username";
        objHeaderCredentials.Password = "password";
        WSExternal.MembershipAuthenticationService objClient = new WSExternal.MembershipAuthenticationService();
        objClient.SoapHeaderCredentialsValue = objHeaderCredentials;
objClient.GetMembershipUserList(false);
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">


  <soap:Body>
      <GetMembershipUserListResponse xmlns="http://namespaceofwebservice">
         <GetMembershipUserListResult>
            <UserList>
               <MembershipUserData>
                  <id>1</id>
                  <UserName>userone</UserName>
                  <PrimaryFirstName>User</PrimaryFirstName>
                  <PrimaryLastName>One</PrimaryLastName>
                  <Address>13 MAIN STREET</Address>
                  <City>ROCHESTER</City>
               </MembershipUserData>
               <MembershipUserData>
                  <id>2</id>
                  <UserName>usertwo</UserName>
                  <PrimaryFirstName>User</PrimaryFirstName>
                  <PrimaryLastName>Two</PrimaryLastName>
                  <Address>15 WEST AVE</Address>
                  <City>JERSEY CITY</City>
               </MembershipUserData>
            </UserList>
            <Page>0</Page>
         </GetMembershipUserListResult>
      </GetMembershipUserListResponse>
   </soap:Body>
我可以这样调用单个公开的web方法:

 WSExternal.SoapHeaderCredentials objHeaderCredentials = new WSExternal.SoapHeaderCredentials();
        objHeaderCredentials.UserName = "username";
        objHeaderCredentials.Password = "password";
        WSExternal.MembershipAuthenticationService objClient = new WSExternal.MembershipAuthenticationService();
        objClient.SoapHeaderCredentialsValue = objHeaderCredentials;
objClient.GetMembershipUserList(false);
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">


  <soap:Body>
      <GetMembershipUserListResponse xmlns="http://namespaceofwebservice">
         <GetMembershipUserListResult>
            <UserList>
               <MembershipUserData>
                  <id>1</id>
                  <UserName>userone</UserName>
                  <PrimaryFirstName>User</PrimaryFirstName>
                  <PrimaryLastName>One</PrimaryLastName>
                  <Address>13 MAIN STREET</Address>
                  <City>ROCHESTER</City>
               </MembershipUserData>
               <MembershipUserData>
                  <id>2</id>
                  <UserName>usertwo</UserName>
                  <PrimaryFirstName>User</PrimaryFirstName>
                  <PrimaryLastName>Two</PrimaryLastName>
                  <Address>15 WEST AVE</Address>
                  <City>JERSEY CITY</City>
               </MembershipUserData>
            </UserList>
            <Page>0</Page>
         </GetMembershipUserListResult>
      </GetMembershipUserListResponse>
   </soap:Body>
如果我通过SoapUI或XMLSpy之类的客户端访问web服务,它将返回如下xml:

 WSExternal.SoapHeaderCredentials objHeaderCredentials = new WSExternal.SoapHeaderCredentials();
        objHeaderCredentials.UserName = "username";
        objHeaderCredentials.Password = "password";
        WSExternal.MembershipAuthenticationService objClient = new WSExternal.MembershipAuthenticationService();
        objClient.SoapHeaderCredentialsValue = objHeaderCredentials;
objClient.GetMembershipUserList(false);
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">


  <soap:Body>
      <GetMembershipUserListResponse xmlns="http://namespaceofwebservice">
         <GetMembershipUserListResult>
            <UserList>
               <MembershipUserData>
                  <id>1</id>
                  <UserName>userone</UserName>
                  <PrimaryFirstName>User</PrimaryFirstName>
                  <PrimaryLastName>One</PrimaryLastName>
                  <Address>13 MAIN STREET</Address>
                  <City>ROCHESTER</City>
               </MembershipUserData>
               <MembershipUserData>
                  <id>2</id>
                  <UserName>usertwo</UserName>
                  <PrimaryFirstName>User</PrimaryFirstName>
                  <PrimaryLastName>Two</PrimaryLastName>
                  <Address>15 WEST AVE</Address>
                  <City>JERSEY CITY</City>
               </MembershipUserData>
            </UserList>
            <Page>0</Page>
         </GetMembershipUserListResult>
      </GetMembershipUserListResponse>
   </soap:Body>

1.
用户一
使用者
一个
主街13号
罗切斯特
2.
用户二
使用者
两个
西大街15号
泽西市
0

我的问题是,如何从web方法中“捕获”此xml,并循环通过它从节点中获取相关数据?

如果使用“添加服务引用”,则将接收对象,而不是xml。这是件好事。请参见“”,我已编辑了您的标题。请看“”,其中的共识是“不,他们不应该”。不幸的是,我只能使用老式的web参考,使用.NET2.0。除非我弄错了,否则它比通过GUI使用服务引用更为手动。我知道可以使用xml和LINQ在代码中进行转换,就像我以前看到的那样。我只是在做这件事的时候稍微转了转。我将尝试看看我是否可以升级解决方案,但是如果有人可以用一种老派的方法来帮助我,那将是很有帮助的。另外,对于标题中的标签,我也很抱歉。有时,不说几个关键词就很难恰当地表达一个问题,“老式web引用”也会返回对象,而不是XML。