Avatar
niderle.l
Člen
Avatar
niderle.l:27. května 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. května 13:37
Avatar
Odpovídá na niderle.l
Ondřej Štorc:27. května 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. května 13:53
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
niderle.l
Člen
Avatar
Odpovídá na Ondřej Štorc
niderle.l:27. května 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. května 14:02
Avatar
Odpovídá na niderle.l
Ondřej Štorc:27. května 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. května 14:20
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
niderle.l
Člen
Avatar
Odpovídá na Ondřej Štorc
niderle.l:27. května 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. května 14:42
Avatar
Ondřej Štorc:27. května 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. května 15:05
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
niderle.l
Člen
Avatar
Odpovídá na Ondřej Štorc
niderle.l:27. května 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. května 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.