我发现。 你们想要的是。
public class UpperCaseUTF8Encoding : UTF8Encoding
{
// Code from a blog http://www.distribucon.com/blog/CategoryView,category,XML.aspx
//
// Dan Miser - Thoughts from Dan Miser
// Tuesday, January 29, 2008
// He used the Reflector to understand the heirarchy of the encoding class
//
// Back to Reflector, and I notice that the Encoding.WebName is the property used to
// write out the encoding string. I now create a descendant class of UTF8Encoding.
// The class is listed below. Now I just call XmlTextWriter, passing in
// UpperCaseUTF8Encoding.UpperCaseUTF8 for the Encoding type, and everything works
// perfectly. - Dan Miser
public override string WebName
{
get { return base.WebName.ToUpper(); }
}
public static UpperCaseUTF8Encoding UpperCaseUTF8
{
get
{
if (upperCaseUtf8Encoding == null) {
upperCaseUtf8Encoding = new UpperCaseUTF8Encoding();
}
return upperCaseUtf8Encoding;
}
}
private static UpperCaseUTF8Encoding upperCaseUtf8Encoding = null;
}
利用这一习俗,你需要使用XMLTextWriter作为XDocument Save方法的目的地。
// This section not shown in the blog
var xDoc = XDocument.Load(xmlDocNm); //This is your xml path value
// Changes to XML Document here
// .Net writes the XML declaration using lower case utf-8.
// <?xml version="1.0" encoding="utf-8"?>
// It is not suppesed to matter but NiceForm expects the delcaration to be uppercase.
// <?xml version="1.0" encoding="UTF-8"?>
// We are using a XMLWriter with a custom Encoding to captialize the UTF
// Set various options to retrive the desired output
var settings = new XmlWriterSettings {
Encoding = new UpperCaseUTF8Encoding(), // Key setting option for this example
NewLineHandling = System.Xml.NewLineHandling.Replace,
NewLineOnAttributes = true,
Indent = true // Generate new lines for each element
};
using (var xmlWriter =XmlTextWriter.Create(xmlDocNm, settings)) {
xDoc.Save(xmlWriter);
}