ファイルこんにちは、私は次のよう編集されたアプリケーション・コードを持っている -変更XML応答が
public partial class ConvertApp : Form
{
public ConvertApp()
{
InitializeComponent();
}
static webservice.Results res= new webservice.Results(out int factSent,out int ComSent)
private static webservice.Results convert()
{
string csv = File.ReadAllText("C:\\test.txt");
string year = "1000" ;
XDocument doc = ConvertCsvToXML(csv, new[] { "," });
webservice.Feed CallWebService = new webservice.Feed();
int recordAmount=0;
factSent = 0;
ComSent = 0;
foreach(XElement el in doc.Descendants("row"))
{
recordAmount = recordAmount+1;
}
webservice.Summary[] Summary = new webservice.Summary[recordAmount];
int i=0;
foreach(XElement el in doc.Descendants("row"))
{
Summary[i] = new webservice.Summary();
Summary[i].person = el.Descendants("var").Where(x => (string)x.Attribute("name") == "person").SingleOrDefault().Attribute("value").Value;
Summary[i].fact = System.Convert.ToInt32(el.Descendants("var").Where(x => (string)x.Attribute("name") == "fact").SingleOrDefault().Attribute("value").Value);
Summary[i].com = System.Convert.ToInt32(el.Descendants("var").Where(x => (string)x.Attribute("name") == "com").SingleOrDefault().Attribute("value").Value);
Summary[i].Centre = el.Descendants("var").Where(x => (string)x.Attribute("name") == "Centre").SingleOrDefault().Attribute("value").Value;
Summary[i].CCentre = el.Descendants("var").Where(x => (string)x.Attribute("name") == "CCentre").SingleOrDefault().Attribute("value").Value;
factSent += Summary[i].fact;
ComSent +=Summary[i].com;
i=i+1;
}
webservice.Results res = CallWebService.updateStatus(Summary, year);
return res;
}
private void Form1_Load(object sender, EventArgs e)
{
int factSent;
int ComSent;
webservice.Results returned = convert(out factSent, out ComSent);
txtResult.Text = System.Convert.ToString(returned.status);
txtMoreRes.Text = returned.errorDetails[i].errorDetails;
factSum.Text = System.Convert.ToString(returned.factSum);
comSum.Text = System.Convert.ToString(returned.comSum);
factSumSent.Text = factSent.ToString();
comSumSent.Text = ComSent.ToString();
time.Text = System.Convert.ToString(DateTime.Now.TimeOfDay);
date.Text = System.Convert.ToString(DateTime.Today);
lineFault.Text = System.Convert.ToString(returned.errDetails[i].lineFault);
}
私の問題は、私はデモ用のWebフォームにロードするために、結果をgettngの方法を使用しています。しかし、私はCSVファイルにロードするxmlレスポンスを取得し、そのファイルを特定のパスに自動的に保存したいので、アプリケーションをWebフォームにする必要がなくなり、これを行う方法がわかりません。
はここで、応答XMLの例である -
<return>
<factSum>24</factSum>
<comSum>15</comSum>
<errDetails>
<errors>The person [123] is unknown , The
centre [14] is unknown </errors>
<Position>0</Position>
</errDetails>
<status>lineFault</status>
</return>
</ns2:FeedResponse>
</S:Body>
そして、私は.CSVファイルが何かを見てみたいlike-
日付、時間、factSent、ComSent、factSum、comSum、エラー、位置、状態 26/01/2011,14:00,24,15,24,15、人[123]は、私はStringBuilderのSbCSVを試してみましたが、それを得ることができませんでしたlineFault
0不明です私がいなくても働く既存のコードを変更して使用する方法を確認してください。しかしpublic partial class ConvertApp : Form
で私に問題を与え、またそれことprivate void Form1_Load(object sender, EventArgs e)
と
static void Main(string[] args)
{
string oldXML = ConfigurationSettings.AppSettings["res"];
string xsltLocation = ConfigurationSettings.AppSettings["Path to where xsl template is saved"];
string new CSV = ConfigurationSettings.AppSettings["Path to where I want the new CSV to go"];
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("Path to where xsl template is saved");
transform.Transform(oldXML, newCSV);
}
この
に入った -<xsl:template match="//return".
<xsl:value-of select="factsum">
//etc
</xsl:template>
そして取り出した - は、私はまたのように見えたXLSテンプレートusing System.Configuration;
とSystem.Xml.Xsl;
を使用してみましたstatic void Main
であり、テンプレートが正しく構成されていなかったと思います。
お手数をおかけしていただきありがとうございました。
結果を取得してcsv形式で保存し、特定の場所に保存するだけで、頭を悩ます必要があります。 – Ebikeneser
入力を解析してStringBuilderを作成することは、CSVバージョンIMHOを構築する正しい方法であり、最後にディスクに保存するのが簡単です。私はまだ正確な問題に従っているかどうかはまだ分かりませんが、プロジェクトをWebサービスとして出力してこのテキストファイルを作成することとは何かが関係しています。どのような場合には、より適切な基本テンプレート(Windows /コンソールアプリなど)を使用して関連するコードを貼り付けるという新しいプロジェクトが、あなたの人生をよりシンプルにするかもしれません。 – eftpotrm