IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:9.4.2013 20:11

Zdravím, řeším menší, pro mě, zapeklitou hádanku. Mám za úkol vytvořit program, který bude sloužit jako "most" pro databáze několika firem do databáze jedné firmy. Firmy posílájí XML feedy, kde jsou informace o produktech.
Jedna firma pošle XML například ve tvaru

<SHOP>
<SHOPITEM>
       <PRODUCT>Název produktu</PRODUCT>
       <DESCRIPTION>Popis produktu</DESCRIPTION>
       <PRICE>698</PRICE>
       <PRICE_VAT>845</PRICE_VAT>
       <VAT>21</VAT>
       <AVAILABILITY>0</AVAILABILITY>
</SHOPITEM>
// dalších 100 záznamů
// ....
</SHOP>

Jiná firma pošle

<STORE>
<PRODUCT>
       <NAME>Název produktu</NAME>
       <DESC>Popis produktu</DESC>
       <PRICE>698</PRICE>
       <VAT>21</VAT>
       <AVAILABILITY>0</AVAILABILITY>
</PRODUCT>
// dalších 100 záznamů
// ....
</STORE>

Tak a co já řeším. Zkouším vymyslet proogram, který dokáže přečíst libovolný XML, nabídnout všechny vyskytující se elementy. Zaškrtat elementy a "vyflusnout" nové XML. Problém je samozřejmě s načítáním. Nemůžu vědet strukturu a tak se snažím vymyslet nějaký chytrý rozpoznávač na kořenový element. To bude stačit. Stačí zjistit že kořenový element je SHOPITEM, jindy PRODUCT a další už si načítám.

Napadlo mě zkusit projet uzly po uzlu a jakmile bude mít jeden uzel vnořených víc jak dva uzly jedná se o kořenový uzel, který hledám. Ovšem tohle nebude asi nejelpší řešení.

Nějaké nápady ? :) Druhá varianta je pro každou firmu udělat tlačítko "Načti" a budu vědět strukturu. Ale těch firem bude možná 5, možná 40 :D. A ručně se mi to cvakat nechce :`

Doufám že mi nikdo neřekne že DOM nebo SAX či něco podobného to má v sobě věstavené :D

Odpovědět
9.4.2013 20:11
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Petr Nymsa
Tvůrce
Avatar
Petr Nymsa:9.4.2013 20:20

Tak možná jsem to vyřešil rychleji než jsme předpokládal :D ... myslíte že tohle bude vždy funkční postup ?

XmlDocument doc = new XmlDocument();
doc.Load("datXML.xml");
XmlNode root = doc.DocumentElement; // hlavní kořen
XmlNode f = root.FirstChild; // získám první item
if (f.Name == "SHOPITEM")
{
    Console.WriteLine("AAA");
}

Zde sice vím jaký je hledaný kořen a testuju to, ale takhle by to mohlo fungovat.. co myslíte ? :)

Nahoru Odpovědět
9.4.2013 20:20
Pokrok nezastavíš, neusni a jdi s ním vpřed
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.