qbxml里面的特殊字符

问题描述 投票:0回答:2

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

问题是我有一个如下字符串: 100 W. Randolph - Ste.4-100 当我尝试使用php devkit迁移此客户时,我遇到了这个问题: 解析提供的XML文本流时,QuickBooks发现错误 我试图将这个em dash直接输入到quickbooks企业(v19)并且它有效。我不确定这里发生了什么。如何在qbxml中提交此em破折​​号,以便quickbooks可以接受它。

php quickbooks
2个回答
1
投票

你可以使用CDATA,

这些是您可能看到的奇怪标签:

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

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

这是一个指向维基页面的链接,其中包含更多详细信息,然后我会关注它的历史等。

https://en.wikipedia.org/wiki/CDATA

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

如果使用XMLWriter库来创建XML,则有两个专门用于此的函数:

https://www.php.net/manual/en/ref.xmlwriter.php

更具体地说

https://www.php.net/manual/en/function.xmlwriter-start-cdata.php

https://www.php.net/manual/en/function.xmlwriter-end-cdata.php

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

干杯。


1
投票

您必须编码特殊字符才能将它们发送到QuickBooks。例如如果你想发送这个:

<Name>1234567 Steel Décor</Name>
<CompanyName>Steel Décor</CompanyName>

你需要发送这个:

<Name>1234567 Steel D&#233;cor</Name>
<CompanyName>Steel D&#233;cor</CompanyName>

如果你正在使用这个PHP库:

然后你可以做这样的事情:

$encoded = QuickBooks_Cast::cast(QUICKBOOKS_ADD_CUSTOMER, 'FullName', $raw);

按照这里的例子:

© www.soinside.com 2019 - 2024. All rights reserved.