Avatar billede flvind Nybegynder
06. marts 2006 - 17:04 Der er 12 kommentarer og
1 løsning

sammesætte udsnit af en xml fil

Hej

Jeg har en xml fil bestående af flere tabeller. Opbygningen at filen ser således ud.
---xml fil ----
<?xml version="1.0" encoding="UTF-8"?>
<Content>
    <Product updateMode="none">
        <uuid>1:67:91f7baf8ec2e0c66b3ad44</uuid>
        <internalName></internalName>
        <status>O</status>
        <ownerOrganisation></ownerOrganisation>
        <ownerId></ownerId>
        <productArea>
            <uuid>1:69:91f7baf8ec2dc020467ef</uuid>
            <internalName>Overnatning</internalName>
            <textDK>Overnatning</textDK>
            <textDE>Unterkünfte</textDE>
            <textUK>Accommodation</textUK>
        </productArea>
        <productType>
            <uuid>1:72:91f7baf8ec2ddf83cbebc</uuid>
            <internalName>Feriehuse</internalName>
            <textDK>Feriehusudlejere</textDK>
            <textDE>Ferienhausvermieter</textDE>
            <textUK>Holiday House Agencies</textUK>
        </productType>
        <emailAddress>info@storkesoen.dk</emailAddress>
        <creationDate>2002-02-22 14:34:34.0</creationDate>
        <modificationDate>2005-01-04 14:46:00.0</modificationDate>
        <Image id="primary">
            <imageUK>
                <ImageTranslation>
                    <imageData encoding="base64"></imageData>
                    <filename>Storkesøenlejlighed copy.jpg</filename>
                </ImageTranslation>
            </imageUK>
        </Image>
        <Description>
            <textDK</textDK>
            <textDE></textDE>
            <textUK></textUK>
        </Description>
        <community></community>
        <Name>
            <nameDK></nameDK>
            <nameDE></nameDE>
            <nameUK></nameUK>
        </Name>
        <Address sortOrder="1">
            <road>Haulundvej</road>
            <houseNumber>164</houseNumber>
            <postalCode>6760</postalCode>
            <city>Ribe</city>
            <geoCode>
                <x>484645</x>
                <y>6130059</y>
            </geoCode>
        </Address>
        <FacilityValue>
            <facilityGroupUUID>1:13:91f7baf8ec2e0c4abfa782</facilityGroupUUID>
            <facilityGroupName>Feriehuse:Kontakt</facilityGroupName>
            <facilityUUID>1:12:91f7baf8ec2e0c4afda788</facilityUUID>
            <facilityName>Feriehuse:Kontakt:Telefon</facilityName>
            <facilityColumnUUID>1:106:91f7baf8ec2e0c4adea783</facilityColumnUUID>
            <facilityColumnName>Feriehuse:Kontakt:Kolonne:1</facilityColumnName>
            <value>75410411</value>
        </FacilityValue>
        <FacilityValue>
            <facilityGroupUUID>1:13:91f7baf8ec2e0c4abfa782</facilityGroupUUID>
            <facilityGroupName>Feriehuse:Kontakt</facilityGroupName>
            <facilityUUID>1:12:91f7baf8ec2e0c4b4ca78e</facilityUUID>
            <facilityName>Feriehuse:Kontakt:Telefax</facilityName>
            <facilityColumnUUID>1:106:91f7baf8ec2e0c4adea783</facilityColumnUUID>
            <facilityColumnName>Feriehuse:Kontakt:Kolonne:1</facilityColumnName>
            <value>75410857</value>
        </FacilityValue>
        <FacilityValue>
            <facilityGroupUUID>1:13:91f7baf8ec2e0c4abfa782</facilityGroupUUID>
            <facilityGroupName>Feriehuse:Kontakt</facilityGroupName>
            <facilityUUID>1:12:91f7baf8ec2e0c4b7aa793</facilityUUID>
            <facilityName>Feriehuse:Kontakt:Website</facilityName>
            <facilityColumnUUID>1:106:91f7baf8ec2e0c4adea783</facilityColumnUUID>
            <facilityColumnName>Feriehuse:Kontakt:Kolonne:1</facilityColumnName>
            <value>www.storkesoen.dk</value>
        </FacilityValue>
        <FacilityValue>
            <facilityGroupUUID>1:13:91f7baf8ec2e0c4abfa782</facilityGroupUUID>
            <facilityGroupName>Feriehuse:Kontakt</facilityGroupName>
            <facilityUUID>1:12:91f7baf8ec2e0c4b9aa798</facilityUUID>
            <facilityName>Feriehuse:Kontakt:E-mail</facilityName>
            <facilityColumnUUID>1:106:91f7baf8ec2e0c4adea783</facilityColumnUUID>
            <facilityColumnName>Feriehuse:Kontakt:Kolonne:1</facilityColumnName>
            <value>info@storkesoen.dk</value>
        </FacilityValue>
        <FacilityValue>
            <facilityGroupUUID>1:13:91f7baf8ec2e0c4e49a7a7</facilityGroupUUID>
            <facilityGroupName>Feriehuse:Feriehuse til leje</facilityGroupName>
            <facilityUUID>1:12:91f7baf8ec2e0c4eb7a7ad</facilityUUID>
            <facilityName>Feriehuse:Feriehuse til leje:Antal</facilityName>
            <facilityColumnUUID>1:106:91f7baf8ec2e0c4e78a7a8</facilityColumnUUID>
            <facilityColumnName>Feriehuse:Feriehuse til leje:Kolonne:1</facilityColumnName>
            <value>18</value>
        </FacilityValue>
    </Product>
---- xml ----

Jeg skal bruge forskellige informationer fra xml filen og da denne består af flere tabeller er mit problem hvordan jeg henter disse informationer ud og eventuelt få dem vist i et datagrid.
Avatar billede etif Nybegynder
06. april 2006 - 11:12 #1
Du kan bruge en Xpath-navigator til at lokalisere det du gerne vil finde:

using System.XML;
using System.XML.XPath;

XPathDocument doc = new XPathDocument(<her skriver du navnet på din xml-fil>);
XPathNavigator nav = new XPathNavigator();
XPathNodeNavigator iterator = nav.Select("/Content/FacilityValue/");
while (iterator.MoveNext())
{
  Console.WriteLine(iterator.Current.Name);
  Console.WriteLine(iterator.Current.Value);
}

Resultatet vil være (for sidste element):
FacilityValue
1:13:91f7baf8ec2e0c4e49a7a7Feriehuse:Feriehuse til leje1:12:91f7baf8ec2e0c4eb7a7ad1:106:91f7baf8ec2e0c4e78a7a8Feriehuse:Feriehuse til leje:Kolonne:1

Øvrige metoder på XPath er MoveTo, MoveToNext, MoveToPrevious, MoveToFirst, Move toFirstChild ..... Check selv i online-dokumentationen
Avatar billede flvind Nybegynder
06. april 2006 - 12:07 #2
hmm jeg får følgende fejl

---fejl 1---
Error    4    Cannot create an instance of the abstract class or interface 'System.Xml.XPath.XPathNavigator'    C:\Documents and Settings\Flemming\My Documents\Visual Studio 2005\Projects\design\fclsData.cs    547    34    design


---fejl 2---
Error    5    The type or namespace name 'XPathNodeNavigator' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\Flemming\My Documents\Visual Studio 2005\Projects\design\fclsData.cs    548    13    design
Avatar billede etif Nybegynder
06. april 2006 - 12:44 #3
Undskyld det giv lidt for hurtigt.
Der skulle have stået:
XPathNavigator nav = doc.CreateNavigator(); og ikke
XPathNavigator nav = new XPathNavigator();
Håber det hjælper
Avatar billede flvind Nybegynder
06. april 2006 - 12:49 #4
hmm hvad så med denne fejl

Error    4    The type or namespace name 'XPathNodeNavigator' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\Flemming\My Documents\Visual Studio 2005\Projects\design\fclsData.cs    549    13    design
Avatar billede flvind Nybegynder
06. april 2006 - 12:53 #5
hvis jeg ændrer
XPathNodeNavigator iterator = nav.Select("/Content/FacilityValue/");
til
XPathNodeIterator iterator = nav.Select("/Content/FacilityValue/");
som jeg troede det skulle være så får jeg denne fejl
Expression must evaluate to a node-set.
Avatar billede etif Nybegynder
06. april 2006 - 12:56 #6
Du skal også huske at lave add en refrence til System.XML til tit projekt check at det står under references i solution explorer ellers så brug add reference og find System.XML.dll under .NET-fanebladet.
Avatar billede flvind Nybegynder
06. april 2006 - 12:59 #7
jeg har lavet referencen men det giver den samme fejl
Avatar billede etif Nybegynder
06. april 2006 - 13:02 #8
Det du rettede var rigtigt. Det med reference referede til den forrige kommentar, men den havde du åbenbart selv fået løst.

Jeg tror at du enten kan skrive Content/FacilityValue eller /facilityValue. Jeg havde overset at Content var dit rodelement. Hvis det ikke hjælper vil jeg lige prøve at lege lidt med din fil.
Avatar billede flvind Nybegynder
10. april 2006 - 13:52 #9
Tak for hjælpen etif nu kom jeg videre med det og er straks kommet til næste problem
Avatar billede etif Nybegynder
26. april 2006 - 14:08 #10
Det var godt det hjalp. Synd at du har fået nye problemer.
Avatar billede flvind Nybegynder
26. april 2006 - 14:14 #11
kan du ikke sende et svar
Avatar billede etif Nybegynder
26. april 2006 - 15:02 #12
Du har vidst allerede givet mig point. For det er kun muligt at sende kommentarer
Avatar billede flvind Nybegynder
27. april 2006 - 07:02 #13
ok løsningen endte med at se således ud

---kode---
XPathDocument Doc = new XPathDocument("c:\\xml\\ribe.xml");
XPathNavigator navigator = Doc.CreateNavigator();

XPathNavigator nav = Doc.CreateNavigator();
XPathNodeIterator iterator = navigator.Select("/Content/Product/productArea[textDK='TransportDK']");

while (iterator.MoveNext())
{

iterator.Current.MoveToParent();
iterator.Current.MoveToFirstChild();
while (søgType != iteratTemp)
{
  iterator.Current.MoveToNext();
  iteratTemp = iterator.Current.Name.ToString();
}
if (søgType == iteratTemp)
{
  iterator.Current.MoveToFirstChild();
  iterator.Current.MoveToNext();
  iterator.Current.MoveToNext();
  lsBoxType.Items.Add(iterator.Current.Value);
  svarType = iterator.Current.Value;
  iterator.Current.MoveToParent();
}
---kode---
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester