【问题标题】:quickbooks xml error Src Text: <?xml version="1.0" encoding="utf-8"?> [duplicate]quickbooks xml 错误 Src 文本:<?xml version="1.0" encoding="utf-8"?> [重复]
【发布时间】: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 BOMStreamWriter and UTF-8 Byte Order Marks
  • 感谢 dbc,禁用 BOM 解决了我的问题。如果可以的话,我会支持你的评论。
  • “试图向 quickbooks 发出 xml 请求”这是应该剥离 BOM 的部分;它不是文档的一部分。

标签: c# xml encoding utf-8 quickbooks


【解决方案1】:

我通常像下面的代码一样开始一个文档。它解决了命名空间的很多问题,而且非常简单:

            string header = "<?xml version=\"1.0\" encoding=\"utf-8\"?><?qbxml version=\"13.0\"?><QBXML></QBXML>";

            XDocument doc = XDocument.Parse(header);
            XElement qbxml = doc.Root;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2019-10-20
    • 2016-06-11
    • 1970-01-01
    相关资源
    最近更新 更多