summaryrefslogtreecommitdiff
path: root/xmlreader/source/xmlreader.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmlreader/source/xmlreader.cxx')
-rw-r--r--xmlreader/source/xmlreader.cxx10
1 files changed, 10 insertions, 0 deletions
diff --git a/xmlreader/source/xmlreader.cxx b/xmlreader/source/xmlreader.cxx
index 1651f857e411..229be044662c 100644
--- a/xmlreader/source/xmlreader.cxx
+++ b/xmlreader/source/xmlreader.cxx
@@ -182,11 +182,21 @@ Span XmlReader::getAttributeValue(bool fullyNormalize) {
}
int XmlReader::getNamespaceId(Span const & prefix) const {
+ OUString spanString = prefix.convertFromUtf8();
+
+ if (auto it = cacheNSIds_.find(spanString); it != cacheNSIds_.end())
+ {
+ return it->second;
+ }
+
auto i = std::find_if(namespaces_.crbegin(), namespaces_.crend(),
[&prefix](const NamespaceData& rNamespaceData) { return prefix.equals(rNamespaceData.prefix); });
if (i != namespaces_.rend())
+ {
+ cacheNSIds_[spanString]= i->nsId;
return i->nsId;
+ }
return NAMESPACE_UNKNOWN;
}