Domyślnie, gdy dzwonisz ElementTree.parse (someXMLfile) przedrostków biblioteki Python ElementTree każdy analizowany węzeł z jego nazw URI w notacji Clarka:Brakuje nazw poprzedzania z ElementTree w Pythonie
{http://example.org/namespace/spec}mynode
To sprawia, że dostęp do określonych węzłów z nazwy ogromny ból później w kodzie.
Przeczytałem dokumenty w ElementTree i przestrzeniach nazw i wygląda na to, że funkcja iterparse()
powinna pozwolić mi zmienić sposób, w jaki parser przedrostkuje przestrzenie nazw, ale dla mojego życia nie mogę zmienić tego prefiksu . Wydaje się, że może się zdarzyć w tle przed zdarzeniem ns-start nawet pożarów jak w poniższym przykładzie:
for event, elem in iterparse(source):
if event == "start-ns":
namespaces.append(elem)
elif event == "end-ns":
namespaces.pop()
else:
...
Jak mogę zrobić to zmienić zachowanie poprzedzania i jaka jest właściwa rzecz do powrotu, gdy końce funkcyjnych ?
interesujące. Chciałbym też wiedzieć. Postępuję w ten sposób, tworząc "stały" XHTML_NS = '{http://www.w3.org/1999/xhtml}', a następnie używając w kodzie XHTML_NS + "mynode" – karlcow
Czy możesz wyjaśnić, co faktycznie próbujesz osiągnąć? ? Dlaczego notacja Clarka jest ogromnym bólem? –
Próbuję zintegrować z istniejącym kodem, który uzyskuje dostęp do rzeczy przez ich pierwotny prefiks (np. 'OpenSearch', zamiast' {http://a9.com/-/spec/opensearchrss/1.0/} ') i miałem nadzieję był ładniejszy sposób niż budowanie typu mapy prefiksowej, o której wspomina @karlcow. –