Moja aplikacja komponuje model strony z wielu źródeł xml. Te źródła są przetwarzane do pamięci jako obiekty DOM za pomocą normalnego analizatora Xerces. Niestety, obiekty Xerces DOM są nie wątek bezpieczny dla operacji tylko do odczytu. Chciałbym móc ponownie wykorzystać sparsowany DOM do odczytu. Czy ktoś wie o innym parserze lub prostym zabezpieczeniu wątków do odczytu implementacji DOM, którego używam?Tworzenie DOM, który jest bezpieczny dla wątków dla operacji odczytu
5
A
Odpowiedz
0
Nie znam żadnego idealnego i prostego rozwiązania.
Pomysł może być odtworzyć Dom pomocą obiektów wątku bezpieczny.
W tym przypadku najlepiej byłoby niezmienny, ponieważ jesteś tylko do odczytu. Będąc niezmiennym, otwierają się również możliwości dalszych ulepszeń (np. Udostępnianie instancji, które prowadzi do mniejszego śladu pamięci).
Chciałabym zaproponować biblioteki, który robi to, ponieważ jest sporo kodowania ...
4
Saxon zapewnia owijarki DOM do jego wewnętrznej i niezmiennej struktury danych.
// create Saxon IdentityTransformer
final Transformer transformer = new TransformerFactoryImpl().newTransformer();
// set up holder for the output
final TinyBuilder outputTarget = new TinyBuilder(
new PipelineConfiguration(new Configuration()));
// transform into Saxon's immutable TinyTree
transformer.transform(xml, outputTarget);
// extract the whole XML as TinyNode
final TinyNodeImpl tinyNode = outputTarget.getTree().getNode(0);
// wrap TinyNode as DOM
final NodeOverNodeInfo nodeOverNodeInfo = DocumentOverNodeInfo.wrap(tinyNode);
// cast to DOM
final Document doc = (Document) nodeOverNodeInfo;
(testowane z sasko-on 9.5.1)
Powiązane problemy
- 1. Czy putStrLn jest bezpieczny dla wątków?
- 2. Czy ten kod jest bezpieczny dla wątków? Jak mogę sprawić, by był bezpieczny dla wątków?
- 3. Czy wątek jest bezpieczny dla wątków SLF4J?
- 4. Czy loop.run_in_executor asyncio jest bezpieczny dla wątków?
- 5. Powody, dla których Hibernate's sessionFactory jest bezpieczny dla wątków
- 6. Jak utworzyć bezpieczny dla wątków bufor/POD?
- 7. Utwórz plik w sposób bezpieczny dla wątków
- 8. Czy wątek TransactionTemplate i SimpleJdbcTemplate jest bezpieczny dla wątków?
- 9. Czy MongoCollection.forEach musi być bezpieczny dla wątków?
- 10. Bezpieczny dla wątków HashSet z kolekcjami Guava
- 11. Czy inl_aton firmy Perl jest bezpieczny dla wątków?
- 12. Fabryka obiektów singleton: czy ten kod jest bezpieczny dla wątków?
- 13. Dlaczego ten kod nie jest bezpieczny dla wątków?
- 14. Czy .NET Socket Send()/Receive() jest bezpieczny dla wątków?
- 15. Dlaczego obiekt sesji JMS nie jest bezpieczny dla wątków?
- 16. Co to jest wątek ByteArrayOutputStream bezpieczny dla wątków?
- 17. Tworzenie autonomicznej konsoli (powłoki) dla operacji specyficznych dla domeny
- 18. Bezpieczny dla wątków, ale szybki dostęp do "ostatecznej" zmiennej?
- 19. Czy ciąg odbierania/ustawiania wątków jest bezpieczny?
- 20. Jak bezpieczne są mapy Golang dla współbieżnych operacji odczytu/zapisu?
- 21. Czy bezpieczny wątek SecureRandom jest bezpieczny?
- 22. Rysowanie UIKit jest bezpieczne dla wątków: jak uzyskać kontekst graficzny?
- 23. Tworzenie puli php5-fpm dla użytkownika w bezpieczny sposób
- 24. Co to jest bezpieczny narzut dla RequestAdditionalTime()?
- 25. Czy metoda executeUpdate w Javie jest bezpieczna dla wątków?
- 26. Czy budowa obiektu funkcji statycznej zakresu jest bezpieczna dla wątków?
- 27. boost :: asio operacji odczytu/zapisu
- 28. Sprawdzanie pliku (TFS) dla operacji pre-build
- 29. dlaczego małe uporządkowanie operacji odczytu/zapisu DOM powoduje ogromną różnicę wydajności
- 30. Równoczesny dostęp do odczytu w tablicy int []: Czy jest bezpieczny? Czy to szybko?