私はJavaScriptの世界ではかなり新しいです。だから私を抱きしめてください。 :-)xmlをエスケープ文字なしで取得する方法は? (javascript、angular)
ユーザー押しボタン(つまり、ユーザーのPCにxmlファイルをダウンロードします)、 "顧客注文を保存":
orders.component.html:
...
<form (ngSubmit)="saveOrdersAsXml()" novalidate>
...
<div class="col-sm-12 text-right">
<button type="submit" class="btn btn-primary btn-lg" >Save Customer Orders</button>
</div>
...
問題がある:どのように
export class OrderComponent implements OnInit
{
...
private saveOrdersAsXml($event)
{
this.orderService.GetOrdersAsXml(this.customerNumber)
.subscribe(res =>
{
// res = "Response with status: 200 OK for URL: http://localhost:52511/..."
// res._body = "<?xml version=\"1.0\" encoding=\"utf-8\"?>..."
// _body contains the xml. How do I get the xml without escape characters??
let xml: string = res;
const file = new Blob([xml], { type: 'text/xml;charset=utf-8' });
saveAs(file, this.customerNumber + '.xml'); // Currently the file will contain "Response with status: 200 OK for URL: http://localhost:52511/..." - I need it to be xml.
}, error => this.errorMessage = <any>error);
}
}
orders.s:エスケープ文字?:
orders.component.tsなく、XMLを取得ervice.ts:
@Injectable()
export class OrderService
{
...
public GetOrdersAsXml(customerNumber: string): Observable<any>
{
const dataResult = this._http.get("http://localhost:52511/api/orders/getordersasxml/" + customerNumber, , this.authenticationService.jwt()))
.map((response: Response) => response)
.catch(this.handleError);
return dataResult;
}
}
OrdersController.cs:
[Produces("application/json")]
[Route("api/orders")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public class OrdersController : Controller
{
...
[HttpGet("getordersasxml/{customerNumber}")]
public string GetOrdersAsXml(string customerNumber)
{
// Here the xml is fine (e.g.: "<?xml version="1.0" encoding="UTF-8"?>...")
return _orderBL.GetOrdersAsXml(customerNumber);
}
}
EDIT:仕事の 後5時間私はまだそれを得ることはありません。
JObject、HttpResponseMessage、byte []とxDocumentを返そうとしました。
とフロントエンドで、私はこれを行う:私はこのようなxDocumentを使用する場合それは...
をイライラ取得している
private saveOrdersAsXml($event)
{
this.orderService.GetOrdersAsXml(this.customerNumber)
.subscribe(res =>
{
console.log("1: " + xmlResult);
console.log("2: " + xmlResult._body);
console.log("3: " + new XMLSerializer().serializeToString(xmlResult._body));
...
}, error => this.errorMessage = <any>error);
}
コンソールに戻りますが、この:
1:ステータスの返答:URLの場合は200 OK ...
2:{"?@ version": "1.0"、 "@ encoding": "utf-16"} "Customer" ...
ERROR TypeError: 'XMLSerializer'で 'serializeToString'を実行できませんでした。パラメータ1の型が 'Node'ではありません。 SafeSubscriber.next(Subscriber.ts:204)の (SafeSubscriber.searchService.GetXMLFile.subscribe._this.errorMessage [as _next](license.component.ts:111) 、SafeSubscriber .__ tryOrUnsub(Subscriber.ts:254) Subscriber.nextで (Subscriber.ts:95)CatchSubscriber.Subscriber._nextで (Subscriber.ts:135)CatchSubscriber.Subscriber.next(Subscriber.tsで :Subscriber._next(135 Subscriber.ts)で 。 95)XMLHttpRequest.onLoadで (http.umd.js:1259)ZoneDelegate.invokeTaskで (zone.js:425)Object.onInvokeTaskで (core.umd.js:3913)
なぜそれがそうですやりたいバックエンドからフロントエンドにxml文字列を送信するような簡単な作業は何ですか?
私は現在歯科医に行くつもりですが、後で戻ってきます。どんな助けもありがとうございます。
なぜあなたはサーバー側のコードに 'string'を返していますか?あなたができることを意味しますが、 'XDocument'を返すこともできます。それは役に立つドキュメントを検証するでしょう。また、 '.map((response:Response)=> response)'は何もしません。 '.map(response => response.blob())'を試したことがありますか? –
'let xml:string = res._body'おそらく? 'res._body'にXMLが含まれていることを確認すると、 –
@ JaromandaXこれは_bodyがエスケープされているという問題です。 – mith7