Porządne czytanie pliku XML

0

Mam:

XmlDocument doc = new XmlDocument();
            doc.Load(@"d:\res\korpusy\milionXtr\120-2-900102.xml");
            foreach (XmlNode node in doc.DocumentElement.ChildNodes)
            {
                string text = node.InnerText;
                Console.WriteLine(text);
                Console.WriteLine();
            }

Ale jest źle bo za pierwszym razem w pętli mam pusty string, a za drugim razem wszystkie stringi z XMLa połączone.

<?xml version="1.0" encoding="UTF-8"?>
<teiCorpus xmlns:xi="http://www.w3.org/2001/XInclude" xmlns="http://www.tei-c.org/ns/1.0">
 <xi:include href="NKJP_1M_header.xml"/>
 <TEI>
  <xi:include href="header.xml"/>
  <text xml:id="txt_text" xml:lang="pl">
   <body xml:id="txt_body">
    <div xml:id="txt_1-div" decls="#h_1-bibl">
     <ab n="p41in92of:pwn:gazety:c0:c0151pew.981.xml_2" xml:id="txt_1.1-ab">Skoro mowa o dodatku za odznaczenie, to trudno zrozumieć dlaczego nie przewiduje go ustawa wypadkowa. Wydaje się, że ludzie, którzy stracili zdrowie w wypadku przy pracy lub wskutek choroby zawodowej, powinni również dodatek ten otrzymywać, jeżeli oczywiście zostali odznaczeni odznaczeniem, z którym dodatek ten jest związany.</ab>
    </div>
    <div xml:id="txt_2-div" decls="#h_2-bibl">
     <ab n="p13in37of:pwn:gazety:c0:c0151pew.981.xml_16" xml:id="txt_2.1-ab">Okoliczność natomiast, czy wnioskodawca rzeczywiście pracuje w warunkach szkodliwych dla zdrowia, jest bez znaczenia prawnego. Nie każdy bowiem, kto jest zatrudniony w takich warunkach, korzysta ze skróconego czasu pracy, a tylko ten, którego do skróconego czasu pracy uprawniają odpowiednie przepisy.</ab>
    </div>
    <div xml:id="txt_3-div" decls="#h_3-bibl">
     <ab n="p90in190of:pwn:gazety:c0:c0151pew.981.xml_3" xml:id="txt_3.1-ab">Organizacja życia populacji starczej jest dopiero w zalążku; z ludźmi nie opuszczającymi mieszkania, którym najtrudniej przychodzi ułożyć sobie życie i którzy najbardziej potrzebują zainteresowania, nie ma kontaktu poza bardzo słabo jeszcze rozwiniętymi usługami pielęgnacyjnymi sióstr PCK.</ab>
    </div>
    <div xml:id="txt_4-div" decls="#h_4-bibl">
     <ab n="p15in40of:pwn:gazety:c0:c0151pew.981.xml_3" xml:id="txt_4.1-ab">Badani utrzymują bliskie kontakty z czterokrotnie mniejszą liczbą przyjaciół niż krewnych. Wśród osób zaprzyjaźnionych absolutną przewagę (80-90%) mają ludzie tej samej płci i na ogół również w starszym wieku (80%), co jest dla respondentów bardzo niekorzystne; w miarę upływu lat dawne kontakty słabną lub przestają istnieć, a nowe nie są nawiązywane. Prawie połowa respondentów (45%) nie ma w ogóle przyjaciół.</ab>
    </div>
    <div xml:id="txt_5-div" decls="#h_5-bibl">
     <ab n="p33in76of:pwn:gazety:c0:c0151pew.981.xml_5" xml:id="txt_5.1-ab">Powyższy schemat, będący niewątpliwie znacznym uproszczeniem rzeczywistych relacji, może posłużyć jako uzupełnienie koncepcji podsystemów uczestnictwa omówionych w poprzednim rozdziale. Przy jego pomocy można obrazować wpływ poszczególnych czynników absencji. Okazuje się przy tym, że pewne czynniki mogą realizować swój wpływ na kilku etapach zachowań absencyjnych, następujących po sobie.</ab>
    </div>
    <div xml:id="txt_6-div" decls="#h_6-bibl">
     <ab n="p21in52of:pwn:gazety:c0:c0151pew.981.xml_20" xml:id="txt_6.1-ab">Nie podzielam w związku z tym poglądu Autora glosy, że gdyby ustawodawca utratę prawa do urlopu za dany rok przez pracownika wiązał z sytuacją, określoną w art. 156 § 1 k. p. , znalazłoby to "zapewne" wyraźne odbicie w tym przepisie.</ab>
    </div>
    <div xml:id="txt_7-div" decls="#h_7-bibl">
     <ab n="p4in19of:pwn:gazety:c0:c0151pew.981.xml_8" xml:id="txt_7.1-ab">Na przyjętą definicję rodziny niepełnej wpłynęły zarówno względy techniczne, a więc stosunkowa łatwość wyodrębnienia spośród pracowników zakładów takich, którzy samotnie wychowują dziecko lub dzieci, jak i przede wszystkim cel badania. Celem badania było bowiem ustalenie potrzeb rodzin niepełnych służące zracjonalizowaniu zakładowej polityki społecznej w odniesieniu do rodzin pracowniczych. Powszechnie wiadomo, że jednym z czynników warunkujących sumienne i staranne wykonywanie obowiązków przez pracowników jest właśnie ich sytuacja rodzinna.</ab>
    </div>
    <div xml:id="txt_8-div" decls="#h_8-bibl">
     <ab n="p7in24of:pwn:gazety:c0:c0151pew.981.xml_3" xml:id="txt_8.1-ab">Celem badania było: określenie zróżnicowania potrzeb zależnie od cech demograficzno-społecznych ankietowanych, stwierdzenie zakresu pomocy otrzymywanej obecnie przez respondentów od osób i instytucji, wyodrębnienie kategorii ludzi starszych najbardziej potrzebujących opieki, a także określenie preferencji tych osób w zakresie postulowanych przez nich określonych form pomocy.</ab>
    </div>
    <div xml:id="txt_9-div" decls="#h_9-bibl">
     <ab n="p43in96of:pwn:gazety:c0:c0151pew.981.xml_3" xml:id="txt_9.1-ab">Tylko 4/5 badanych mieszka w lokalu samodzielnym; pozostali maja nakaz kwaterunkowy na część mieszkania bądź odnajmują pokój sublokatorski. Ludzie mieszkający razem z obcymi to najczęściej osoby o niższym poziomie wykształcenia. Spośród nich co czwarty jest narażony na stałe lub sporadyczne przykrości; ludzie ci zapobiegają konfliktom przez ograniczenie do minimum korzystania ze wspólnych pomieszczeń.</ab>
    </div>
   </body>
  </text>
 </TEI>
</teiCorpus>
0

a czego sie spodziewales? pierwszy wezel nie ma zadnej zawartosci <xi:include href="NKJP_1M_header.xml"/> a drugi <TEI> zawiera cala reszte dokumentu...
nie wiem co chcesz wyciagnac, ale sproboj albo xpath (przyklad tu http://csharp.net-tutorials.com/xml/using-xpath-with-the-xmldocument-class/) albo XmlReader

0

@katelx pytacz po prostu "nie rozumie" plików XML i co to jest text, attribute itd

0

Spodziewałem się że będzie mi wchodził w
<xi> <text> <body>

i <ab></p>
1
XmlDocument doc = new XmlDocument();
            doc.Load(@"d:\res\korpusy\milionXtr\120-2-900102.xml");
            var mgr = new XmlNamespaceManager(doc.NameTable);
            mgr.AddNamespace("n", doc.DocumentElement.NamespaceURI);
            foreach (XmlNode node in doc.SelectNodes("/n:teiCorpus/n:TEI/n:text/n:body/n:div/n:ab", mgr))
            {
                Console.WriteLine(node.InnerText);
                Console.WriteLine();
            }
0

Dzięki! Nareszcie każdy akapit oddzielnie. A jak jeszcze przeczytać <ab n="p13in37of:pwn:gazety:c0:c0151pew.981.xml_16" xml:id="txt_2.1-ab"> a może jeszcze

? Ale najważniejsze że już dzieli na akapity.</p>
0

dostosuj sobie kod ktory ci dalam, zawsze mozesz zmienic sciezke w SelectNodes albo uzyc properties z node typu InnerText, InnerXml, ParentNode, Attributes itd

1 użytkowników online, w tym zalogowanych: 0, gości: 1