SOAP Services无法正确显示XML数据

时间:2019-09-18 07:00:16

标签: c# oracle asp.net-web-api soap

我是SOAP Web Services的专家,这是我第一次担任该人员。我注意到一个错误,并且我知道问题出在DataTable中,但不知道如何更改代码以按预期工作。 问题出在后面。当用户输入ID返回以下ID的xml数据时,我创建了Web API项目并创建了基本的Web API。 一旦运行,我将获得成功的结果:

Web API

这是我的代码:

 [HttpGet]
        [ResponseType(typeof(AKONTA))]
        public IHttpActionResult GetAKONTA(string id)
        {
            AKONTA aKONTA = db.AKONTAS.Find(id);
            if (aKONTA == null)
            {
                return BadRequest("Ne postoji A_KONTO pod tim rednim brojem");
            }

            return Ok(aKONTA);
        }

使用SOAP Web服务创建相同的项目和逻辑后,首先从数据库中获取所有字段,然后在网页末尾获得数据。(请参见下面的图像)

enter image description here

enter image description here

我的问题是,当我进入Web API项目时,如何避免使用DataTable并生成XML? 我用Google搜索它,但找不到其他任何东西,因为我没有使用MSSQL数据库,当前我正在使用Oracle数据库。

[WebMethod]
        public DataTable GetAkontasById(int Id)
        {
            OracleConnection conn = new OracleConnection
            {
                ConnectionString = ConfigurationManager.ConnectionStrings["Akontas"].ConnectionString
            };
            conn.Open();
            OracleCommand command = conn.CreateCommand();
            string query = "Select * from AKONTAS where A_KONTO = '" + Id + "'";
            command.CommandText = query;
            OracleDataReader reader = command.ExecuteReader();
            DataTable dtusertables = new DataTable();
            dtusertables.Load(reader);
            if (null != reader && !reader.IsClosed)
            {
                reader.Close();
            }
            return dtusertables;
        }

更新

这是我的WEB API项目XML

<AKONTA xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/AkontasWebApi">
<A_KONTO>515534</A_KONTO>
<BROJ i:nil="true"/>
<DAT_UNOS>2005-12-07T00:00:00</DAT_UNOS>
<DRZAVA i:nil="true"/>
<EMAIL i:nil="true"/>
<FAKS i:nil="true"/>
<INTERNET i:nil="true"/>
<KONTAKT i:nil="true"/>
<MB>4309080150003</MB>
<MJESTO i:nil="true"/>
<NAZIV>HANNY TR TUZLA</NAZIV>
<OPSTINA i:nil="true"/>
<PBROJ i:nil="true"/>
<PDVMB i:nil="true"/>
<PORESKI i:nil="true"/>
<SIFRA_RAD>30017</SIFRA_RAD>
<TELEFON i:nil="true"/>
<TRANSAKCIJ i:nil="true"/>
<ULICA i:nil="true"/>
<VRSTA_KLIJENTA i:nil="true"/>
</AKONTA>

1 个答案:

答案 0 :(得分:1)

使用类似下面的Xml Linq的代码,该代码需要xml响应并像旧api一样创建新的xml:

using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;

namespace ConsoleApplication131
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {

            string xml = File.ReadAllText(FILENAME);
            XDocument doc = XDocument.Parse(xml);

            XElement element = doc.Descendants().Where(x => x.Name.LocalName == "DocumentElement").FirstOrDefault();

            XElement newXml = (XElement)element.FirstNode; 

        }
    }

}