我有一个示例回复:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "apiID=2794187564564";
// Prepare web request...
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(
"http://fms.psrpc.co.uk/apistate2.php?" + postData);
// Send the data.
myRequest.GetResponse();
}
private void Form1_Load(object sender, EventArgs e)
{
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;
}
}
}
我想删除<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
<trk:TrackResponse xmlns:trk="somens1">
<common:Response xmlns:common="somens2">
<common:ResponseStatus>
<common:Code>1</common:Code>
<common:Description>Success</common:Description>
</common:ResponseStatus>
<common:TransactionReference>
<common:CustomerContext>Sample Response</common:CustomerContext>
</common:TransactionReference>
</common:Response>
</trk:TrackResponse>
</soapenv:Body>
</soapenv:Envelope>
,Envelope
和Header
标记,并仅使用从Body
开始的xml。
我正在尝试使用TrackResponse
遍历响应。
jdom
我实际上需要从 Element body = jdom.getRootElement().getChild("Body", Namespace.getNamespace("http://schemas.xmlsoap.org/soap/envelope/"));
开始从jdom Document
检索的jdom Element
对象。
解决方案或更好的替代方案?
答案 0 :(得分:1)
使用以下内容检索您的body
内容:
Element body = jdom.getRootElement().getChild("Body", Namespace.getNamespace("http://schemas.xmlsoap.org/soap/envelope/"));
执行:
Namespace trk = Namespace.getNamespace("somens1");
Element response = body.getChild("TrackResponse", trk);
response.detach();
Document doc = new Document(response);
这将创建一个新文档,其中trk
带前缀的命名空间和TrackResponse
位于根目录。将元素从一个位置(父级)移动到另一个位置时需要detach()
。