English 中文(简体)
XmlWriter to written to a String und to a file
原标题:
  • 时间:2009-06-05 12:33:35
  •  标签:

我有一个需要归还XML号指示的WCF服务。 但似乎作者只想建立档案,而不是扼杀。 我尝试:

string nextXMLstring = "";
using (XmlWriter writer = XmlWriter.Create(nextXMLstring))

这就产生了一个错误,在接下来说: XMLstring isnt a file path. 它希望:

using (XmlWriter writer = XmlWriter.Create("nextXMLstring.xml"))

我怎么能够加强我的XML,然后把它作为扼杀手段?

感谢!

最佳回答

你需要创建一个StringWriter,并将其传递给XmlWriter。

The string overload of the XmlWriter. 制作的是档案名称。

E.g.

using (var sw = new StringWriter()) {
  using (var xw = XmlWriter.Create(sw)) {
    // Build Xml with xw.


  }
  return sw.ToString();
}
问题回答

正如Richard所说的那样,StringWriter是前进的道路。 然而,有一条星号:通过缺席,StringWriter将刊登在UTF-16上的广告。 <>Usually XML位于UTF-8。 您可以通过分级“StingWriter”来解决这个问题;

public class Utf8StringWriter : StringWriter
{
    public override Encoding Encoding
    {
         get { return Encoding.UTF8; }
    }
}

这将影响到由<代码>XmlWriter撰写的声明。 当然,如果你在其他地方以双亲形式书写,确保你使用与你在<条码>上设置的编码相匹配的编码。 (上述法典总是假定UTF-8;它只是为了形成一个更一般性的版本,接受在建筑商中的编码,是徒劳的。)

之后,请:

using (TextWriter writer = new Utf8StringWriter())
{
    using (XmlWriter xmlWriter = XmlWriter.Create(writer))
    {
        ...
    }
    return writer.ToString();
}

我知道这一点是老的,答案是正确的,但这里是这样做的另一个途径。 尤其是如果你在你开始施压时不想要UTF8 BOM,而且你想要否决案文:

using (var ms = new MemoryStream())
using (var x = new XmlTextWriter(ms, new UTF8Encoding(false)) 
                   { Formatting = Formatting.Indented })
{
     // ...
     return Encoding.UTF8.GetString(ms.ToArray());
}

使用<代码>StringBuilder:

var sb = new StringBuilder();
    using (XmlWriter xmlWriter = XmlWriter.Create(sb))
    {
        ...
    }
return sb.ToString();

Guys没有忘记打电话xmlWriter。 同上,第2段。 否则,你们的扼杀胜于创造。 这只是空洞的。

我认为,这里最简单和最快的解决办法是:

StringBuilder sb = new StringBuilder();

using (var writer = XmlWriter.Create(sb, settings))
{
    ... // Whatever code you have/need :)

    sb = sb.Replace("encoding="utf-16"", "encoding="utf-8""); //Or whatever uft you want/use.
    //Before you finally save it:
    File.WriteAllText("path\dataName.xml", sb.ToString());
}




相关问题
热门标签