我是SOAP Web Services的专家,这是我第一次担任该人员。我注意到一个错误,并且我知道问题出在DataTable
中,但不知道如何更改代码以按预期工作。
问题出在后面。当用户输入ID返回以下ID
的xml数据时,我创建了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服务创建相同的项目和逻辑后,首先从数据库中获取所有字段,然后在网页末尾获得数据。(请参见下面的图像)
我的问题是,当我进入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>
答案 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;
}
}
}