【问题标题】:XML Format Not Coming in wcf while returning data as string在以字符串形式返回数据时,XML 格式未出现在 wcf 中
【发布时间】:2013-01-29 01:50:14
【问题描述】:

功能:

public string getAccomodationspattern2(string AccomodationID)
        {
            SqlCommand cmd = new SqlCommand("XML_AccommodationsDetail_V4", con);

            cmd.Parameters.AddWithValue("@AccommodationID", AccomodationID);

            cmd.CommandType = CommandType.StoredProcedure;

            SqlDataAdapter da = new SqlDataAdapter(cmd);

            DataTable dt = new DataTable();

            da.Fill(dt);
            for (int j = 0; j < dt.Rows.Count; j++)
            {
                for (int k = 0; k < dt.Columns.Count; k++)
                {
                    Response += dt.Rows[j][k].ToString();
                }
            }

            //StringBuilder output = new StringBuilder();
            //XmlReader rawData  = XmlReader.Create(new StringReader(Response));

            //XmlWriterSettings writerSettings = new XmlWriterSettings();
            //writerSettings.OmitXmlDeclaration = true;

            //using (XmlWriter transformedData = XmlWriter.Create(output, writerSettings))
            //{
            //    XslCompiledTransform transform = new XslCompiledTransform();
            //    transform.Load(HttpContext.Current.Server.MapPath("getaccommodation2.xslt"));
            //    transform.Transform(rawData, transformedData);
            //    return output.ToString();
            //}

            XslCompiledTransform transform = new XslCompiledTransform();

            transform.Load(HttpContext.Current.Server.MapPath("getaccommodation2.xslt"));

            StringWriter results = new StringWriter();

            using (XmlReader reader = XmlReader.Create(new StringReader(Response)))
            {
                transform.Transform(reader, null, results);
            }
            return results.ToString();
            //XDocument xdoc = new XDocument(results.ToString());
            //return xdoc.Root;

        }

调用函数:

 [OperationContract]
    [WebGet(UriTemplate = "/AccommodationsBookingPattern/getAccommodations?id={AccomodationID}",
    BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml)]
    string getAccomodationspattern2(string AccomodationID);

问题是我收到这样的输出:

我现在得到的 XML 文件输出:

This XML file does not appear to have any style information associated with it. The document tree is shown below.

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
<result><Address></Address><checkin><from>00:30</from><to>01:15</to></checkin><city>London</city><city_id>1</city_id><Location><Latitude>13131313</Latitude><Longitude>11131131</Longitude></Location><city_id>1</city_id><max_persons_in_reservation>1000</max_persons_in_reservation><name>Tahir Hotel</name><ranking>1</ranking><url>123Testing</url><zip>W2 6DX</zip></result><result><Address></Address><checkin><from>00:30</from><to>01:15</to></checkin><city>London</city><city_id>1</city_id><Location><Latitude>13131313</Latitude><Longitude>11131131</Longitude></Location><city_id>1</city_id><max_persons_in_reservation>1000</max_persons_in_reservation><name>Tahir Hotel</name><ranking>1</ranking><url>123Testing</url><zip>W2 6DX</zip></result><result>

问题

我想要正确的标签,我可以打开结果地址标签并以 xml 形式关闭。请帮助我将不胜感激

【问题讨论】:

    标签: asp.net xml wcf xslt


    【解决方案1】:

    如果您希望 XML 作为 XML 而不是字符串返回,则应将返回类型更改为 XmlNode

    public XmlNode getAccomodationspattern2(string AccomodationID)
    

    然后返回一个:

    XmlDocument doc = new XmlDocument();
    doc.LoadXml(results.ToString());
    
    return doc;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-02
      • 2020-07-30
      • 2018-08-18
      • 1970-01-01
      • 2014-05-27
      • 2014-04-18
      • 1970-01-01
      • 2023-04-11
      相关资源
      最近更新 更多