我正在将XDeclaration添加到我的Xdocument中,如下所示:
XDocument xml = new XDocument(new XDeclaration("1.0", "utf-8", "yes")
这给了我结果:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
我正在为Quickbooks Merchant Services构建XML,所以我只需要:
<?xml version="1.0"?>
是否可以这样做?
答案 0 :(得分:2)
您可以尝试使用不提供任何编码的自定义StringWriter
,例如:
public class StringWriterNoEncoding : StringWriter
{
public override Encoding Encoding
{
get { return null; }
}
}
然后使用StringWriterNoEncoding
打印XML:
XDocument xdoc = new XDocument(new XDeclaration("1.0", "", ""), new XElement("Root"));
var sw = new StringWriterNoEncoding();
xdoc.Save(sw);
Console.WriteLine(sw.ToString());
//above will print :
//<?xml version="1.0"?>
//<Root />
答案 1 :(得分:0)
这很有效。
void Main() {
XDocument xml = new XDocument(new XDeclaration("1.0", "utf-8", ""), new XElement("Root"));
var sw = new UTF8StringWriter();
xml.Save(sw);
Console.WriteLine(sw.GetStringBuilder().ToString());
}
private class UTF8StringWriter : StringWriter {
public override Encoding Encoding { get { return Encoding.UTF8; } }
}
输出:
<?xml version="1.0" encoding="utf-8"?>
<Root />
答案 2 :(得分:0)
无论如何我需要将它转换为字符串,所以我对我不想留在那里的文本进行了替换:
string xmlString = xml.Declaration.ToString() + "\n" + xml.ToString();
xmlString = xmlString.Replace(@" encoding=""utf-8"" standalone=""yes""", "");
答案 3 :(得分:0)
设置编码并将独立设置为null:
XDocument xml = new XDocument(new XDeclaration("1.0", null, null)
会给予
<?xml version="1.0"?>