是否可以缩短XDocument的XDeclaration ?
本文关键字:XDeclaration XDocument 是否 | 更新日期: 2023-09-27 18:08:57
我添加一个XDeclaration到我的Xdocument如下:
XDocument xml = new XDocument(new XDeclaration("1.0", "utf-8", "yes")
结果如下:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
我正在为Quickbooks商家服务构建XML,所以我只需要:
<?xml version="1.0"?>
这是可能的吗?
您可以尝试使用不提供任何编码的自定义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 />
无论如何我都需要将其转换为字符串,所以我对不想留在那里的文本进行了替换:
string xmlString = xml.Declaration.ToString() + "'n" + xml.ToString();
xmlString = xmlString.Replace(@" encoding=""utf-8"" standalone=""yes""", "");
设置编码和独立为null:
XDocument xml = new XDocument(new XDeclaration("1.0", null, null)
会给
<?xml version="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 />