Avatar billede lsp_pj Nybegynder
10. februar 2008 - 08:15 Der er 18 kommentarer og
1 løsning

Load XML-doc (fil for stor?)

Hej ! Med nedenstående kode kan jeg læse et XML-dokument, der ligger lokalt på min PC. Men så snart dokumenterne bliver bare lidt store sker der intet - og det er som om koden blot bliver sprunget over... ? Hvad kan der være galt? Håber I kan hjælpe!!!



Private Sub Form_Load()
  Dim objDoc As MSXML2.DOMDocument40
  Dim objNodeList As MSXML2.IXMLDOMNodeList
  Dim objNode As MSXML2.IXMLDOMNode
       
  Set objDoc = New MSXML2.DOMDocument40
 
 
  objDoc.Load ("C:\VB\WFS.simpel\TEST_fil2.xml")
 
      Set objNodeList = objDoc.selectNodes("ogcwfs_FeatureCollection/gml_featureMember/au1_MAT_REG/au1_JOUR_NR")
      If Not objNodeList Is Nothing Then
        'Loop though each node in the node list
        For Each objNode In objNodeList
          MsgBox objNode.Text
        Next
      End If

   

 
 
End Sub
Avatar billede nielle Nybegynder
10. februar 2008 - 08:21 #1
Kunne det tænkes at have noget at gøre med denne her?

http://support.microsoft.com/kb/313372
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 11:57 #2
Jeg tror det ikke. Jeg kan sagtens få koden til at steppe gennem en XML-fil med 8-10 noder (50 linier). Men så snart den kommer over en vis størrelse (dog kun 300 KB og ca. 7000 linier) - sker der intet - og der kommer ingen msgbox ???
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 11:57 #3
Altså min "For Each objNode In objNodeList" virker fint på en lille fil. Men ikke en stor?
Avatar billede smitten1 Nybegynder
10. februar 2008 - 12:02 #4
Prøv at sætte async til False inden du kalder Load
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 12:25 #5
Hej. Så fandt jeg årsagen!!! Det skyldes ikke størrelsen, men når data bliver tilpas store får jeg pludselig også data med der indeholder et "ø". Så det er nu mit problem. Hvis der er æøå virker min node-reader slet ikke! Hvad gør man så? Ud over at lave søg og erstat?

Det er data jeg henter på nettet, og jeg vil egentlig gerne have ø'et med, så søg/erstat er ikke sagen - så ødelægger jeg data...
Avatar billede erikjacobsen Ekspert
10. februar 2008 - 12:37 #6
Står der angivelse af tegnsæt i din XML-fil? Er den gemt med samme tegnsæt?
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 12:50 #7
Nej - der er ikke angivet noget omkring tegnsæt i XML-filen.
Avatar billede erikjacobsen Ekspert
10. februar 2008 - 12:52 #8
Det burde der vel - mon det er utf-8, hvis der ikke er angivet noget? Der sku' nok stå noget i retning af:

<?xml version="1.0" encoding="iso-8859-1" ?>

Hvor har du XML-filen fra?
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 13:01 #9
Her et lille fil_eksempel. Jeg trækker data fra en web-server. Det er denne der volder problemer: <au1_MAS_MATRNR>22ø</au1_MAS_MATRNR>



<?xml version="1.0"?>
<ogcwfs_FeatureCollection xmlns_ogcwfs="http_//www.opengis.net/wfs" xmlns_gml="http_//www.opengis.net/gml" xmlns_xsi="http_//www.w3.org/2001/XMLSchema-instance" xsi_schemaLocation="http_//schemas.kms.dk/wfs http_//schemas.kms.dk/wfs/topo_mat/wfs_kms_vector_extended_01_sde_types.xsd http_//www.opengis.net/wfs http_//schemas.opengis.net/wfs/1.0.0/WFS-basic.xsd">
    <gml_boundedBy>
        <gml_null>unavailable</gml_null>
    </gml_boundedBy>
    <gml_featureMember>
        <au1_MAT_REG xmlns_au1="http_//schemas.kms.dk/wfs" fid="MAT_REG.35685069">
            <au1_GEOMETRI>
                <gml_Polygon srsName="EPSG_25832">
                    <gml_outerBoundaryIs>
                        <gml_LinearRing srsName="EPSG_25832">
                            <gml_coordinates>614717.0785046729,6132770.595327103 614716.6359813084,6132721.600934579 614791.3453271028,6132720.877102803 614782.9771028038,6132743.845327103 614777.4471962617,6132759.317289719 614717.0785046729,6132770.595327103</gml_coordinates>
                        </gml_LinearRing>
                    </gml_outerBoundaryIs>
                </gml_Polygon>
            </au1_GEOMETRI>
            <au1_OBJEKTKODE>5555</au1_OBJEKTKODE>
            <au1_ID>35685</au1_ID>
            <au1_ELAVSKODE>2015256</au1_ELAVSKODE>
            <au1_MAS_MATRNR>22ø</au1_MAS_MATRNR>
            <au1_LOD_ID>186</au1_LOD_ID>
            <au1_KOMNR>4</au1_KOMNR>
            <au1_EJD_NR>4</au1_EJD_NR>
            <au1_HNOTNR>5</au1_HNOTNR>
            <au1_LOD_ANT>1.0</au1_LOD_ANT>
            <au1_REG_AREAL>2</au1_REG_AREAL>
            <au1_BEREGN>o</au1_BEREGN>
            <au1_NOTERING>
            </au1_NOTERING>
            <au1_VEJ_AREAL>0.0</au1_VEJ_AREAL>
            <au1_VEJ_KODE>b</au1_VEJ_KODE>
            <au1_VAND_AREAL>0.0</au1_VAND_AREAL>
            <au1_VAND_KODE>b</au1_VAND_KODE>
            <au1_SKOV_NOT>
            </au1_SKOV_NOT>
            <au1_SKOV_AREAL>0.0</au1_SKOV_AREAL>
            <au1_KLITNOT>
            </au1_KLITNOT>
            <au1_KLITAREAL>0.0</au1_KLITAREAL>
            <au1_STRANDNOT>
            </au1_STRANDNOT>
            <au1_STR_AREAL>0.0</au1_STR_AREAL>
            <au1_JOUR_NR>U1978</au1_JOUR_NR>
            <au1_AREALBET>
            </au1_AREALBET>
            <au1_JORDNOT>
            </au1_JORDNOT>
            <au1_ANVEND>
            </au1_ANVEND>
            <au1_BELIGG>
            </au1_BELIGG>
            <au1_AFSLUT>
            </au1_AFSLUT>
            <au1_ELAVNAVN>Markjorder</au1_ELAVNAVN>
            <au1_KOMNAVN>Kommune</au1_KOMNAVN>
        </au1_MAT_REG>
    </gml_featureMember>
</ogcwfs_FeatureCollection>
Avatar billede erikjacobsen Ekspert
10. februar 2008 - 13:57 #10
Tag den ind i en texteditor. Selv Notesblok til windows kan bruges. Check at der står "ø". Udvid headeren som jeg skrev før, og gem den som ANSI, og så prøv igen. Egentlig er UTF-8 mere generelt, men indtil videre leger vi bare, ik'?
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 14:39 #11
Ja, hvis jeg indsætter denne i toppen af filen så virker det:
<?xml version="1.0" encoding="iso-8859-1" ?>

Så jeg må altså skrive den ned på disken og erstatte første linie på en eller anden måde.
Avatar billede erikjacobsen Ekspert
10. februar 2008 - 14:52 #12
Du skulle nu hellere henvende dig det sted du får XML-filen fra. De bør jo "opdrages" til at levere et ordentligt format.
Avatar billede erikjacobsen Ekspert
10. februar 2008 - 14:57 #13
Og du skal nu ikke lave om i filen, du skal læse den ind som iso-8859-1, hvis de altid leverer den sådan, men ikke vil skrive det. VB.NET: Kald load-metoden med en textreader, der læser som iso-8859-1 (jeg har ikke et eksempel).
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 17:19 #14
Ja, men jeg tror ikke det er så let lige at få ændret output. Den sidste forstår jeg ikke? Jeg bruger VB6.0 og XML-parser 4.0.
Avatar billede erikjacobsen Ekspert
10. februar 2008 - 17:29 #15
Okay, jeg forstår mig ikke synderligt på VB6.
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 17:33 #16
Vil du ha' point? Du fandt jo en god del af løsningen...?
Avatar billede erikjacobsen Ekspert
10. februar 2008 - 17:36 #17
Nej tak, samler ikke.
Avatar billede lsp_pj Nybegynder
10. februar 2008 - 17:43 #18
Indtil videre vil jeg bruge:

XML_Data = Replace(XML_Data, "<?xml version=""1.0""?>", "<?xml version=""1.0"" encoding=""iso-8859-1"" ?>") inden jeg skriver til fil på disk. Det ser ud til at virke fint :)
Avatar billede lsp_pj Nybegynder
11. februar 2008 - 07:59 #19
Lukker!
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
Kurser inden for grundlæggende programmering

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



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows