Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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
Ladislav Niderle:27.5.2018 13:37

Ahoj potřeboval bych poradit. Potřebuji nějak vytvořit objekt, který budu schopný pomocí LINQu dostat do XML.
Vnitřek XML, o který mi jde by měl vypadat následovně:
<PLP>
<Element>hodno­ta</Element>
<Element>hodno­ta</Element>
<HVLP1>
<Element>hodno­ta</Element>
<Element>hodno­ta</Element>
</HVLP1>
<IVLP1>
<Element>hodno­ta</Element>
<Element>hodno­ta</Element>
</IVLP1>
</PLP>
<PLP>
<Element>hodno­ta</Element>
<Element>hodno­ta</Element>
<HVLP2>
<Element>hodno­ta</Element>
<Element>hodno­ta</Element>
</HVLP2>
<IVLP2>
<Element>hodno­ta</Element>
<Element>hodno­ta</Element>
</IVLP2>
</PLP>

To HVLP a IVLP bych měl mít pokud vím vyřešené, ale jedná se mi o to PLP jak na to správně vytvořit objekt a potom to správně použít. To PLP tam může být jednou, ale taky třeba 10 krát.

Předem moc děkuji za pomoc nebo nasměrování.

 
Odpovědět
27.5.2018 13:37
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Ladislav Niderle
Ondřej Štorc:27.5.2018 13:53

Bylo by celkem dobrý kdyby jsi sem dal i ten objekt, kterej chceš převést do XML

Nahoru Odpovědět
27.5.2018 13:53
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Ondřej Štorc
Ladislav Niderle:27.5.2018 14:02

Ten objekt právě potřebuji nejdříve nějak udělat a abych se přiznal, tak nevím jak by měl vypadat, aby udělal to co má. Původně se předávalo už děsných 80 parametrů což se mi nelíbí, takže se to snažím narvat do objektu. V tom původním bylo zajistěno, že budou jenom 2 výskyty a všechna data se posílala, takže zapsat to PLP nebyl problém, ale právě bych rád to měl přes objekt, ale nevím přesně jak to udělat. Jestli třeba slovník, který bude vypadat následovně: Dictionary<int, List<objektDat>> by byl na to vhodný to právě nevím.

 
Nahoru Odpovědět
27.5.2018 14:02
Avatar
Ondřej Štorc
Tvůrce
Avatar
Odpovídá na Ladislav Niderle
Ondřej Štorc:27.5.2018 14:20

Nemáš teda aspoň nějakou reálnou ukázku toho XML, kterej by jsi mohl zveřejnit? Protože z toho co jsi zveřejnil nic moc nevykoukám...

Nahoru Odpovědět
27.5.2018 14:20
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Ondřej Štorc
Ladislav Niderle:27.5.2018 14:42

Zde je ukázka toho čeho chci docílit:

<PLP>
                    <Mnozstvi>2</Mnozstvi>
                    <Navod>1-1-1</Navod>
                    <Uhrada>PACIENT</Uhrada>
                    <HVLPReg>
                        <Kod>0145180</Kod>
                        <ATC>R06AE09</ATC>
                        <Nazev>ZENARO</Nazev>
                        <Forma>TBL FLM</Forma>
                        <Sila>5MG</Sila>
                        <CestaPodani>POR</CestaPodani>
                        <Baleni>90 II</Baleni>
                    </HVLPReg>
                    <ZadankaZP>1234567</ZadankaZP>
                    <ID_LP_Zdroj>1</ID_LP_Zdroj>
                </PLP>
                <PLP>
                    <Mnozstvi>1</Mnozstvi>
                    <Navod>2-1-1</Navod>
                    <Uhrada>ZAKLADNI</Uhrada>
                    <HVLPReg>
                        <Kod>0180087</Kod>
                        <ATC>R03AK07</ATC>
                        <Nazev>SYMBICORT TURBUHALER 200 MIKROGRAMŮ/ 6 MIKROGRAMŮ/ INHALACE</Nazev>
                        <Forma>INH PLV</Forma>
                        <Sila>160MCG/4,5MCG</Sila>
                        <CestaPodani>INH</CestaPodani>
                        <Baleni>1X120DÁV</Baleni>
                    </HVLPReg>
                    <ZadankaZP>1234566</ZadankaZP>
                    <ID_LP_Zdroj>2</ID_LP_Zdroj>
                </PLP>

Nakonec jsem vytvořil slovník, kde klíč je pouze index, abych věděl kolik PLP sekcí tam bude a jeho hodnota je List<DataLeku>, která obsahují všechny potřebné informace. S tím by snad problém být neměl, ale zase jsem narazil na to, že vytvořím v XML element PLP a potom mám problém:

leky.Select(kv => new XElement("PLP",
                        kv.Value.Select(nv =>
                        AddElement(true, "Mnozstvi", nv.Mnozstvi, 3),
                        AddElement(true, "Navod", , 80),

Protože se potřebuji dostat dostat do listu a to nevím jak toho momentálně docílím.

 
Nahoru Odpovědět
27.5.2018 14:42
Avatar
Ondřej Štorc
Tvůrce
Avatar
Ondřej Štorc:27.5.2018 15:05
class PLP
{
        public int Mnozstvi { get; set; }
        public string Navod { get; set; }
        public string Uhrada { get; set; }
        public HVLPReg HVLPReg { get; set; }
        public string Zadanka { get; set; }
        public string Zdroj { get; set; }
}

class HVLPReg
{
        public string Kod { get; set; }
        public string ATC { get; set; }
        public string Nazev { get; set; }
        public string Forma { get; set; }
        public string Sila { get; set; }
        public string CestaPodani { get; set; }
        public string Baleni { get; set; }

}

var res = XDocument.Parse(nejakeXML).Elements("PLP").Select(plp =>
new PLP
{
        Mnozstvi = int.Parse(plp.Element("Mnozstvi").Value),
        Navod = plp.Element("Navod").Value,
        Uhrada = plp.Element("Uhrada").Value,
        HVLPReg = new HVLPReg
        {
                Kod = plp.Element("HVLPReg").Element("Kod").Value,
                ATC = plp.Element("HVLPReg").Element("ATC").Value,
                Nazev = plp.Element("HVLPReg").Element("Nazev").Value,
                Forma = plp.Element("HVLPReg").Element("Forma").Value,
                Sila = plp.Element("HVLPReg").Element("Sila").Value,
                CestaPodani = plp.Element("HVLPReg").Element("CestaPodani").Value,
                Baleni = plp.Element("HVLPReg").Element("Baleni").Value,
        },
        Zadanka = plp.Element("ZadankaZP").Value,
        Zdroj = plp.Element("ID_LP_Zdroj").Value
}).ToList();


var doc = new XDocument(res.Select(plp => new XElement("plp",
        new XElement("Mnozstvi", plp.Mnozstvi),
        new XElement("Navod", plp.Navod),
        new XElement("Uhrada", plp.Uhrada),
        new XElement("HVLPReg",
                new XElement("Kod", plp.HVLPReg.Kod),
                new XElement("ATC", plp.HVLPReg.ATC),
                new XElement("Nazev", plp.HVLPReg.Nazev),
                new XElement("Forma", plp.HVLPReg.Forma),
                new XElement("Sila", plp.HVLPReg.Sila),
                new XElement("CestaPodani", plp.HVLPReg.CestaPodani),
                new XElement("Baleni", plp.HVLPReg.Baleni)
        ),
        new XElement("ZadankaZP", plp.Zadanka),
        new XElement("ID_LP_Zdroj", plp.Zdroj)
)).ToArray());

No asi takhle, ale netestoval jsem to...

Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět
27.5.2018 15:05
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Odpovídá na Ondřej Štorc
Ladislav Niderle:27.5.2018 16:10

Moc děkuji, Tento způsob zápisu se zdá skvělý a rapidně mi ubylo vstupních parametrů :)

 
Nahoru Odpovědět
27.5.2018 16:10
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 7 zpráv z 7.