Php qbxml中的特殊字符

Php qbxml中的特殊字符,php,quickbooks,Php,Quickbooks,最近几天,我注意到Quickbooks不接受em dash,即使qbxml验证器说xml是有效的 问题是我有一个字符串,如下所示: 100 W.伦道夫–第4-100节 当我尝试使用php devkit迁移此客户时,我遇到了以下问题: QuickBooks在分析提供的XML文本流时发现错误 我试着将这个em短划线直接输入到quickbooks企业版(v19),结果成功了。 我不知道这里发生了什么。如何在qbxml中提交此em破折号,以便quickbooks可以接受它。您必须对特殊字符进行编

最近几天,我注意到Quickbooks不接受em dash,即使qbxml验证器说xml是有效的

问题是我有一个字符串,如下所示:
100 W.伦道夫–第4-100节

当我尝试使用php devkit迁移此客户时,我遇到了以下问题:
QuickBooks在分析提供的XML文本流时发现错误

我试着将这个em短划线直接输入到quickbooks企业版(v19),结果成功了。
我不知道这里发生了什么。如何在qbxml中提交此em破折号,以便quickbooks可以接受它。

您必须对特殊字符进行编码才能将其发送到quickbooks。e、 g.如果您试图发送此邮件:

<Name>1234567 Steel Décor</Name>
<CompanyName>Steel Décor</CompanyName>
<Name>1234567 Steel D&#233;cor</Name>
<CompanyName>Steel D&#233;cor</CompanyName>
根据此处的示例:

您可以使用CDATA

这些是你可能见过的奇怪的标签:

<Name><![CDATA[1234567 Steel Décor]]></Name>

Cdata基本上是指字符数据,通常是将HTML和其他特殊字符放入XML文件的一种方式。它告诉XML解析器忽略此内容并将其视为纯文本(基本上)

这里有一个指向wiki页面的链接,其中包含更多详细信息,然后我会键入,比如它的历史记录等

在XML文档或外部解析的实体中,CDATA节是元素内容的一部分,标记为解析器仅将其解释为文本数据,而不是标记

如果使用XMLWriter库生成XML,则有两个函数专门用于此目的:

更具体地说

我在过去使用过很多次,它们对大多数特殊角色都很有效


干杯。

您的数据是否在
CDATA
标记中?很抱歉,我对xml没有深入的了解,顺便说一句,在检查这篇CDATA和qbxml时,我找到了这篇文章。CDATA似乎正在使用Quickbooks。谢谢你的提示,@ArtisticPhoenix,让我检查一下,然后发布结果。当然希望它对你有用,如果没有,我可以共享代码,将它们转换为
-
普通连字符。这是目前的备用解决方案least@ArtisticPhoenix,你能把你的答案和细节贴出来吗?这样我就可以投票给你了?我使用CDATA进行了测试,效果也不错。
<Name><![CDATA[1234567 Steel Décor]]></Name>