【发布时间】:2017-10-05 22:30:25
【问题描述】:
我在尝试向 quickbooks 发出 xml 请求时遇到了某种 xml 错误。我在 C# 中使用 XDocument 创建了 xml,我想知道它是否编码不正确?
错误信息:
Line: 1 LinePos: 1 Src Text:  原因:在文档顶层无效。
这里是xml文件的开始
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="13.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
这是我在 C# 中创建 xml 声明的方式
XmlDocument POx = new XmlDocument();
XmlDeclaration xmldeclaration = POx.CreateXmlDeclaration("1.0", "UTF-8", null );
XmlElement root = POx.DocumentElement;
POx.InsertBefore(xmldeclaration, root);
【问题讨论】:
-
肯定是BOM。它不是XmlDocument的一部分,而是由StreamWriter在写入Stream时发出的。您没有显示执行此操作的代码,但要禁用 BOM,请参阅 Create Text File Without BOM 或 StreamWriter and UTF-8 Byte Order Marks。 -
感谢 dbc,禁用 BOM 解决了我的问题。如果可以的话,我会支持你的评论。
-
“试图向 quickbooks 发出 xml 请求”这是应该剥离 BOM 的部分;它不是文档的一部分。
标签: c# xml encoding utf-8 quickbooks