Преобразование json в qbxml

Есть ли простой способ конвертировать JSON в QBXML для импорта в QB Desktop? Я пытался использовать онлайн-конвертеры, и результаты в лучшем случае отрывочны, и мне нужно что-то, что я могу включить в веб-приложение.


person rgfischerjr    schedule 20.02.2016    source источник
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
comment
Спасибо! Я начинаю с экспорта, копию которого я могу отправить вам, и в конечном итоге я пытаюсь импортировать в 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