zoukankan      html  css  js  c++  java
  • Aras学习笔记 (10) Asp.net代码实现AML查询并返回用户实体

    1、首先建立Innovator连接。

    HttpServerConnection conn = IomFactory.CreateHttpServerConnection("http://localhost/InnovatorServer/", "InnovatorSolutions", "admin", "innovator");
    Item login = conn.Login();
    Innovator inn = IomFactory.CreateInnovator(conn);

    2、拼接AML字符串。

    string aml = "<AML><Item type='User' action='get'><id>3C70CC6FD09B480092E49C12D4845392</id></Item></AML>"; //单条数据
    //string aml = "<AML><Item type='User' action='get'></Item></AML>"; //多条数据

    3、执行applyAML方法并返回Item对象。

    Item item = inn.applyAML(aml);
    if (item != null)
    {
    }

     4、处理返回soap结果。 通常情况下处理 dom.InnerXML内容即可。另外可以用node及nodeList来判断。当item.node != null时得到的是一条数据,当tem.nodeList != null返回多条数据。

    if (item.node != null)
    {
      //提取一个对象
      string result = item.dom.InnerXml;
      ModelHelper helper = new ModelHelper();
      //UserModel userModel = helper.GetUserModel(result);
      UserModel user = helper.GetModelFromXml<UserModel>(result); }
    else if (item.nodeList != null) {   //提取多个对象   string result = item.dom.InnerXml;   ModelHelper helper = new ModelHelper();   List<UserModel> list = helper.GetModelListFromXml<UserModel>(result); } else {   string cc = "no data"; }

    5、使用实体类生成工具。将SQL Server表自动生成实体类的工具很多,我使用过的包括 Entity Framework、动软.net代码生成器、Code Smith代码生成工具等。其中cnblogs上的钢钢大神写了一个小工具,非常好用,有兴趣的可以去下载

    https://www.cnblogs.com/xugang/archive/2010/05/19/1739474.html

     

    6、保存用户实体类。

     

    7、调用返回用户实体方法(泛型)。

    UserModel user = helper.GetModelFromXml<UserModel>(result);

    8、读取soap字符串参数。

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(xml);
    XmlNodeList nodeList = xmlDoc.GetElementsByTagName("Item");

    9、取得用户实体属性列表。

    PropertyInfo[] propertyList = typeof(T).GetProperties(); 

    10、创建实体类实例。

    T obj = Activator.CreateInstance<T>();//创建指定类型实例

    11、循环实体属性及soap节点。当属性名称和节点名称相同时,给实体类实例赋值。 

    foreach (PropertyInfo property in propertyList)
    {
         for (int i = 0; i < node.ChildNodes.Count; i++)
         {
             if (node.ChildNodes[i].Name.ToLower() == property.Name.ToLower())
             {
                 property.SetValue(obj, node.ChildNodes[i].InnerText, null);
                break;
            }
        }
    }                        

    BTW,如果需要得到用户列表,在循环soap节点时把实体类实例obj保存在List中即可。

  • 相关阅读:
    Java流程控制语句
    Linux文件过滤及内容编辑处理
    Java运算符优先级
    Java位运算基础知识
    【Linux】【FastDFS】FastDFS安装
    【Linux】【redis】redis安装及开启远程访问
    【Linux】【sonarqube】安装sonarqube7.9
    【Linux】【PostgreSQL】PostgreSQL安装
    【Linux】【maven】maven及maven私服安装
    【Linux】【jenkins】自动化运维七 整合sonarqube代码审查
  • 原文地址:https://www.cnblogs.com/61007257Steven/p/9953396.html
Copyright © 2011-2022 走看看