Есть ли простой способ конвертировать JSON в QBXML для импорта в QB Desktop? Я пытался использовать онлайн-конвертеры, и результаты в лучшем случае отрывочны, и мне нужно что-то, что я могу включить в веб-приложение.
Преобразование json в qbxml
comment
Какой язык программирования?
- person Keith Palmer Jr.   schedule 20.02.2016
comment
Кит - предпочтительно PHP. Спасибо.
- person rgfischerjr   schedule 21.02.2016
Ответы (2)
Если вы начинаете с чего-то вроде этого:
{
"CustomerRef": {
"FullName": "Test Customer, LLC"
},
"TxnDate": "2016-02-21",
"InvoiceLineAdd": [
{
"ItemRef": {
"FullName": "Test Item 1"
},
"Quantity": 5
},
{
"ItemRef": {
"FullName": "Test Item 2"
},
"Quantity": 3
}
]
}
Вы можете использовать такую функцию:
function jsonToXML(&$root, $arr, $base = null)
{
foreach ($arr as $key => $value)
{
if (is_numeric($key))
{
$key = $base;
}
if (is_array($value))
{
$child = $root->addChild($key);
jsonToXML($child, $value, $key);
}
else
{
$root->addChild($key, $value);
}
}
}
И назовите это так:
$root = new SimpleXMLElement('<InvoiceAdd/>');
jsonToXML($root, $arr);
print($root->asXML());
Чтобы получить такие результаты:
<?xml version="1.0"?>
<InvoiceAdd>
<CustomerRef>
<FullName>Test Customer, LLC</FullName>
</CustomerRef>
<TxnDate>2016-02-21</TxnDate>
<InvoiceLineAdd>
<InvoiceLineAdd>
<ItemRef>
<FullName>Test Item 1</FullName>
</ItemRef>
<Quantity>5</Quantity>
</InvoiceLineAdd>
<InvoiceLineAdd>
<ItemRef>
<FullName>Test Item 2</FullName>
</ItemRef>
<Quantity>3</Quantity>
</InvoiceLineAdd>
</InvoiceLineAdd>
</InvoiceAdd>
person
Keith Palmer Jr.
schedule
22.02.2016
Спасибо! Я начинаю с экспорта, копию которого я могу отправить вам, и в конечном итоге я пытаюсь импортировать в QB как заказ на покупку с настраиваемым полем.
- person rgfischerjr; 22.02.2016
xmlbuilder-js для node.js может анализировать обычные объекты JavaScript: https://github.com/oozcitak/xmlbuilder-js
Вот один лайнер:
вар построитель = требуется ('xmlbuilder')
var foo = { // данные JSON }
var requestXML = builder.create(JSON.parse(foo)).end();
person
Dillon
schedule
13.08.2016