Данные XML в плоский массив - PullRequest
0 голосов
/ 17 сентября 2011

У меня есть (возможно) простая проблема, но в настоящее время я не могу ее решить.

У меня есть отформатированная строка XML, подобная этой:

<?xml version="1.0" encoding="utf-8"?>
<e5Notification xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xml.element5.com/2.3/ordernotification.xsd">
<OrderNotification>
<Purchase>
<PurchaseId>391489835</PurchaseId>
<PurchaseDate>2011-09-17T11:37:52</PurchaseDate>
<PurchaseOrigin>online</PurchaseOrigin>
<PaymentCompleteDate>2011-09-17T11:37:52</PaymentCompleteDate>
<PaymentStatus>test payment arrived</PaymentStatus>
<CustomerData>
<BillingContact>
<LastName>User</LastName>
<FirstName>Test</FirstName>
<Email>nix@inter.net</Email>
<Address>
<Street1>Musterweg 123</Street1>
<City>Musterhausen</City>
<PostalCode>12345</PostalCode>
<CountryId>DE</CountryId>
<Country>Deutschland</Country>
</Address>
</BillingContact>
<DeliveryContact>
<LastName>User</LastName>
<FirstName>Test</FirstName>
<Email>nix@inter.net</Email>
<Address>
<Street1>Musterweg 123</Street1>
<City>Musterhausen</City>
<PostalCode>12345</PostalCode>
<CountryId>DE</CountryId>
<Country>Deutschland</Country>
</Address>
</DeliveryContact>
<CustomerPaymentData>
<PaymentMethod>Visa</PaymentMethod>
<Currency>EUR</Currency>
</CustomerPaymentData>
<Language>Deutsch</Language>
<RegName>Test User</RegName>
<SubscribeNewsletter>false</SubscribeNewsletter>
</CustomerData>
<PurchaseItem>
<RunningNo>1</RunningNo>
<ProductId>1234567896</ProductId>
<ProductName>Test-Product</ProductName>
<NotificationNo>0</NotificationNo>
<DeliveryType>Electronically</DeliveryType>
<Currency>EUR</Currency>
<Quantity>1</Quantity>
<ProductSinglePrice>192.44</ProductSinglePrice>
<VatPct>19.00</VatPct>
<Discount>0.00</Discount>
<ExtendedDownloadPrice>0.00</ExtendedDownloadPrice>
<ManuelOrderPrice>0.00</ManuelOrderPrice>
<ShippingPrice>0.00</ShippingPrice>
<ShippingVatPct>19.00</ShippingVatPct>
<Subscription>
<Interval>Monthly without end</Interval>
</Subscription>
</PurchaseItem>
</Purchase>
</OrderNotification>
</e5Notification>

Я хочу преобразовать это в простой как можно более плоский массив.

Я пытался найти SO для возможных, почти совпадающих решений, чтобы решить его самостоятельно, но, возможно, у меня в голове возникла блокадаimmo.

Может быть, кто-то может мне помочь.

1 Ответ

0 голосов
/ 17 сентября 2011

Это кажется чрезвычайно сложной проблемой, поэтому я, вероятно, не понимаю вопроса. Ответ - проанализировать xml, сохранив его в array[], таким образом (используя псевдо-C нотацию):

array[0]:   struct OrderNotification, consisting of one or more
              struct Subscription, where each subscription has a collection of
                struct Purchase, and each Purchase has some
                  struct PurchaseItem;
array[1]:   same as array[0]
array[2]:   same as array[0]

usw.

Это начинает отвечать на ваш вопрос? Или я не прав?

...