XmlReader - dostęp do parenta

0

Witam,
Korzystam z XmlReadera i chcę dostać się do atrybutów pierwszego rodzica dla wskazanego elementu i zawartości danego elementu, jak to zrobić?

Tutaj mój plik XML:

<korzen>
  <rodzic format="txt">
     <dziecko>        
          Jakaś zawartość(...)          
     </dziecko>
  </rodzic>
</korzen>

Tutaj mój kod C#

 
 using (XmlReader reader = XmlReader.Create(new StringReader(plik_xml)))
            {
                while (reader.ReadToFollowing("dziecko"))
                {
                    //tutaj chcę dotać się do dwóch rzeczy, do "txt" oraz do "Jakaś zawartość(...)"
                    
                }
                
            }

W miarę możliwości chciałbym uniknąć LINQ

0

trochę OT: na linq (XElement) byłoby to to zrobienia w dwóch krótkich linijkach.

0

jeśli możesz podaj rozwiązanie dla linq, może mający taki sam problem w przyszłości akurat nie będzie mieć takich ograniczeń, jak ja

0
// przygotowanie danych
string xmlContent = @"<korzen><rodzic format=""txt""><dziecko>Jakaś zawartość(...)</dziecko></rodzic></korzen>";
var xml = XElement.Parse(xmlContent);
var child = xml.Element("rodzic").Element("dziecko");

// wyciągnięcie wartości
var text = child.Value;
var parentAttrValue = child.Parent.Attribute("format").Value;
0

Czy ktoś mógłby jeszcze spojrzeć na mój problem? :-)

0

Reader.ReadElementContentAsString() da Ci zawartość dziecko.
Natomiast przy tym rozwiązaniu w żaden sposób nie jesteś w stanie odczytać rodzica, gdyż XMLReader pozwala tylko na czytanie w przód, ewentualnie cofanie się do elementu, gdy czytasz atrybuty, lecz w żaden sposób nie jesteś w stanie cofnąć się do rodzica.

Jedynym rozwiązaniem tutaj jest użycie LINQ, bądź przebudowanie pętli w taki sposób aby najpierw czytała rodzica, potem dziecko.

b.

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