首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >qbxml中的特殊字符

qbxml中的特殊字符
EN

Stack Overflow用户
提问于 2019-04-02 20:32:40
回答 2查看 246关注 0票数 1

最近几天,我注意到Quickbook不接受em破折号,即使qbxml验证器也说xml是有效的。

问题是我有一个字符串,如下所示:

100 W. Randolph - Ste.4-100

当我试图使用php迁移这个客户时,我遇到了以下问题:

QuickBooks在解析提供的XML文本流时发现了一个错误。

我尝试将这个em破折号直接输入到quickbooks企业(v19),它成功了。我不知道这里发生了什么。我如何在qbxml内部提交这个em破折号,以便quickbooks能够接受它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-17 19:41:24

你可以使用CDATA,

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

代码语言:javascript
复制
<Name><![CDATA[1234567 Steel Décor]]></Name>

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

这里有一个指向wiki页面的链接,上面有更多的细节,然后我想输入它的历史等等。

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

我在过去已经用过很多次了,它们对大多数特殊的角色都很有效,等等。

干杯。

票数 2
EN

Stack Overflow用户

发布于 2019-04-04 12:13:57

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

代码语言:javascript
复制
<Name>1234567 Steel Décor</Name>
<CompanyName>Steel Décor</CompanyName>

你需要发送这个:

代码语言:javascript
复制
<Name>1234567 Steel D&#233;cor</Name>
<CompanyName>Steel D&#233;cor</CompanyName>

如果您正在使用这个PHP:

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

代码语言:javascript
复制
$encoded = QuickBooks_Cast::cast(QUICKBOOKS_ADD_CUSTOMER, 'FullName', $raw);

根据这里的示例:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55483132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档