3

XML を返したいときに、誰もが XmlDocument を返すように述べている方法を読み続けています。生の XML を文字列として返す方法はありますか? 私は、XML を含む文字列を返す多くの Web サービス (他の人が作成したもの) を使用してきました。XmlDocument を返す場合、そのメソッドは .Net 上にないユーザーによってどのように消費されるのでしょうか?

生の XML を でラップせずに文字列として返す方法は何<string></string>ですか?

ありがとう!

4

1 に答える 1

9

.Net Web サービスについて最初に理解すべきことは、それらが SOAP プロトコルを使用していたことです。これは、Web メソッドを介して返される型が何であれ、XML にシリアル化されることを意味します。したがって、返されるすべてのオブジェクトは、呼び出し元に返される XML 文字列になります。

XML を実際の文字列値として返すだけの場合は、次のように Web サービス内にサーバー側のメソッドを作成します。

[WebMethod]
public string ReturnXMLString() {
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml("<root><item>Hello World</item></root>");
    return xmlDoc.OuterXML;
}

ただし、実際の XML を呼び出し元に返そうとする場合は、次のように .Net に XML のシリアライズを任せます。

[WebMethod]
public XmlDocument ReturnXMLString() {
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml("<root><item>Hello World</item></root>");
    return xmlDoc;
}

最後に、SOAP プロトコルを使用せずに単純に XML 応答を探している場合は、応答を XML としてラップしてシリアライズし、特注のページからページ応答を試してください。

void Page_Load(object sender, EventArgs e) {
XmlDocument xmlDoc= new XmlDocument();
xmlDoc.LoadXml("<root>Hello World</root>");
Response.ContentType ="text/xml";
xmlDoc.Save(Response.Output);
于 2010-03-17T22:53:06.807 に答える