2011-07-29 26 views
5

Chcę wyodrębnić tekst poza tagami. Na przykład:jak wyodrębnić tekst poza tagami xml

<body> 
    This is an exmaple 
    <p> 
     blablabla 
    </p> 
    <references> 
     refer 1 
     refer 2 
    </references> 
</body> 

Chcę uzyskać tekst "To jest przykład" tylko bez tekstu w innych znacznikach (p lub odniesienia). Próbowałem kilku metod, ale nie działa. Any1 może pomóc? Wielkie dzięki.

Odpowiedz

8

Musisz myśleć tekst wewnątrz znacznika, jak węzeł. Węzeł tekstowy jest pobierany za pomocą węzła testowego text(). Przykład. Biorąc pod uwagę:

<body> 
    This is an exmaple 
    <p> 
    blablabla 
    <\p> 
    <references> 
     refer 1 
     refer 2 
    <\references> 
    another example 
<\body> 

XPath:

"/body/text()" 

pobierze wszystkie węzły tekstowe dzieci z body, jak "To exmaple" i "kolejnym przykładem", przy czym:

"/body/text()[1]" 

będzie pobierz tylko pierwszą: "To jest przykład". Jeśli chcesz wszystkie podrzędne węzły tekstowe można użyć:

"/body//text()" 

lub chcesz wszystkie węzły tekstowe wewnątrz pierwszej p:

"/body/p[1]//text()" 
+0

Można tego dokonać poprzez C# XmlDocument lub XmlReader? Próbuję odczytać tekst i napisać tekst do innego xml do indeksowania. –

+0

Oczywiście możesz najpierw użyć XPath na xmldocument przy użyciu niektórych metod, takich jak SelectNodes lub SelectSingleNode (nie używaj tego od co najmniej roku). –

2

Użyj tego XPath: /body/text(). Będzie wybrać This is an exmaple.

Powiązane problemy