2017-06-29 34 views
0

私は、HTTP GETメソッドどのようにXML宣言を追加できますか?

どのように私はこのXML宣言を追加することができますを使用してURL XML から、このXML出力をお持ちですか?

?xmlのバージョン= "1.0" エンコード= "ISO-8859-1"?>

これはのServiceContract

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
      [WebInvoke(Method = "GET", 
      ResponseFormat = WebMessageFormat.Xml, 
      //BodyStyle = WebMessageBodyStyle.Wrapped, 
      UriTemplate = "{id}")] 

    XElement GetRecipesByID(string id); 

これが実装されている、 私はXMLにデータテーブルを変換URLから取得する

public XElement GetRecipesByID(string id) 
    { 
     StringWriter str = new StringWriter(); 
     DataSet dataSet = new DataSet(); 
     dataSet.Tables.Add(Table); 
     XmlTextWriter xtext = new XmlTextWriter(str); 
     xtext.Formatting = Formatting.Indented; 
     xtext.WriteStartDocument(); 
      xtext.WriteStartElement("rss"); 
      xtext.WriteAttributeString("version", "2.0"); 
      xtext.WriteStartElement("channel"); 
      xtext.WriteElementString("title", "GetCard"); 
      xtext.WriteElementString("link", "10.0.0.253"); 
      xtext.WriteElementString("lastBuildDate", " "); 
      xtext.WriteElementString("generator", "Alikas Feed"); 
      xtext.WriteElementString("error", error); 
      xtext.WriteElementString("cardid", "RX0016502"); 
      xtext.WriteElementString("name", " "); 
      xtext.WriteElementString("passport_id", "60001082881"); 
      xtext.WriteElementString("tel", " "); 
      xtext.WriteEndElement(); 
      xtext.WriteEndDocument(); 

      result = str.ToString(); 

     xtext.Close(); 

     XmlDocument doc = new XmlDocument(); 
     doc.Save(str); 


     return XElement.Parse(result); 

    } 

このファイルをファイルに保存するとxml宣言がURL xml宣言からこのxmlを取得しようとしたときに表示されません。 URLからこの宣言を表示する必要があります。

答えて

0

WriteStartDocumentはすでにXML宣言を追加しています。 TextWriterで指定されたEncodingを使用します。

StringWriterを使用しています。これは、UTF-16として.NET文字列があるため、常にUTF-16をレポートします。 ISO-8859-1を取得するには、StreamWriterまたは明示的なエンコーディングを持つTextWriterを作成する必要があります。

XDocumentを直接作成することを検討しましたか?その場合はXmlWriterを使用する必要はありません。

+0

のために働くようだはい、私はXDocumentが、同じ結果と試みました。 このXMLをファイルに書き込むと、XML宣言がありますが、Chromeでは表示されません。 –

+0

ファイル内にファイルがある場合、ファイル内にあるので、コードの問題ではないように思えます。 Chromeはそれを表示していません。 –

0

次試してみてください。

  string header = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><rss version=\"2.0\"/>"; 
      XDocument doc = XDocument.Parse(header); 

      XElement rss = doc.Root; 

      Boolean error = false; 
      rss.Add(new XElement("channel", new object[] { 
       new XElement("title", "GetCard"), 
       new XElement("link", "10.0.0.253"), 
       new XElement("lastBuildDate", " "), 
       new XElement("generator", "Alikas Feed"), 
       new XElement("error", error), 
       new XElement("cardid", "RX0016502"), 
       new XElement("name"), 
       new XElement("passport_id", "60001082881"), 
       new XElement("tel") 
      })); 

      doc.Save(@"c:\temp\test.xml"); 
0

このための特別な方法があります:

var xmlDoc = new XmlDocument(); 
xmlDoc.CreateXmlDeclaration("1.0", "ISO-8859-1", null); 
xmlDoc.Save(str); 

注MSDNからのパラメータをコードには:これは、あなたがするXmlDocumentオブジェクトを保存するときに使用されるエンコーディングですファイルまたはストリーム。したがって、Encodingクラスでサポートされている文字列に設定する必要があります。それ以外の場合は、保存に失敗します。

0

これは私

XDocument xel = XDocument.Parse( "<root><el>123</el></root>"); 
xel.Declaration = new XDeclaration("1.0","UTF-8","true"); 
xel.Save(@"c:\temp.xml"); 
関連する問題