Jaka jest historia XPath i obsługa przestrzeni nazw? Czy XPath jako specyfikacja poprzedzała przestrzenie nazw? Jeśli mam dokument gdzie elementy zostały podane domyślnej przestrzeni nazw:XPATHS i domyślne przestrzenie nazw
<foo xmlns="uri" />
Wydaje się, że niektóre z bibliotek procesorów XPath nie rozpozna //foo
powodu nazw, podczas gdy inni będą. Opcja, o której myślał mój zespół, polega na dodaniu przedrostka przestrzeni nazw za pomocą wyrażeń regularnych do XPath (możesz dodać prefiks przestrzeni nazw za pomocą XmlNameTable), ale wydaje się, że jest to kruche, ponieważ XPath jest językiem elastycznym, jeśli chodzi o testy węzłów.
Czy istnieje jakiś standard, który się do tego stosuje?
Moje podejście jest nieco hackish, ale wydaje się działać dobrze; Usuwam deklarację xmlns
za pomocą wyszukiwania/zamiany, a następnie stosuję XPath.
string readyForXpath = Regex.Replace(xmldocument, "xmlns=\".+\"", String.Empty);
Czy to uczciwe podejście czy ktoś rozwiązał to inaczej?
Jeśli chcesz wybrać, używając węzłów na wielu głębokościach, musisz skończyć coś takiego: 'xml.SelectNodes (" kml: kml/kml: Document/kml: Folder ", manager)' –