是否可以缩短XDocument的XDeclaration?

时间:2014-06-16 22:23:43

标签: c# .net xml quickbooks-online

我正在将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"?>

是否可以这样做?

4 个答案:

答案 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"?>
相关问题