Jaki jest najlepszy sposób sprawdzenia poprawności pliku XML względem pliku XSD?
Tworzę pliki xml, które muszą pasować do otrzymanego pliku xsd. Jaki jest najlepszy sposób sprawdzenia ich zgodności?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
13 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
javax.xml.validation.Validator
http://java.sun.com/j2se/1.5.0 ... .html
.
Stała fabryczna schematu to , która definiuje pliki XSD. Powyższy kod porównuje deskryptor wdrażania WAR z adresem URL , ale równie łatwo można to porównać z plik lokalny.
Nie powinieneś używać DOMParser do walidacji dokumentu (chyba że Twoim celem jest i tak utworzenie modelu obiektowego dokumentu). Spowoduje to utworzenie obiektów DOM podczas przetwarzania dokumentu - marnotrawstwo, jeśli nie zamierzasz ich używać.
Anonimowy użytkownik
Potwierdzenie od:
Xerces2
http://xerces.apache.org/xerces2-j/... Poradnik do tego
tutaj
http://www.ibm.com/developerwo ... .html
(req. signup).
Oryginalne źródło: bezczelnie skopiowane stąd:
Anonimowy użytkownik
Potwierdzenie od:
Teraz niegrzeczne pliki konfiguracyjne nie będą w stanie ukończyć naszej kompilacji!
http://ant.apache.org/manual/T ... .html
http://ant.apache.org/manual/T ... .html
Anonimowy użytkownik
Potwierdzenie od:
.
http://www.ibm.com/developerwo ... .html
:
lub SchemaLocation (zawsze lista mapowań przestrzeni nazw w xsd)
Inne odpowiedzi również działają tutaj, ponieważ pliki .xsd „odwzorowują” przestrzenie nazw zadeklarowane w pliku .xml, ponieważ deklarują przestrzeń nazw, a jeśli pasuje ona do przestrzeni nazw w pliku .xml, to dobrze. Ale czasami wygodnie jest mieć własny
solver
https://stackoverflow.com/a/2342859/32453
...
Z javadocs: „jeśli utworzysz schemat bez określania adresu URL, pliku lub źródła, język Java utworzy ten, który przeszukuje sprawdzany dokument w celu znalezienia schematu, którego powinien użyć. Na przykład:”
i to działa dla wielu przestrzeni nazw itp.
Problem z tym podejściem polega na tym, że jest prawdopodobnie lokalizacją sieciową, więc domyślnie wychodzi i przechodzi do trybu online przy każdym sprawdzeniu, nie zawsze jest to optymalne.
Oto przykład, który sprawdza plik XML pod kątem jakichkolwiek odniesień do XSD (nawet jeśli musi wyciągnąć je z sieci):
Możesz uniknąć pobierania plików XSD, do których istnieją odwołania, z sieci WWW, nawet jeśli do plików xml znajdują się odwołania do adresów URL, określając xsd ręcznie (zobacz inne odpowiedzi tutaj) lub używając
rozpoznawanie stylu
https://coderoad.ru/25698764/
„Katalog XML”. Podobno wiosna też
może przechwycić
https://stackoverflow.com/a/10768972/32453
prośby o url dotyczące serwowania plików lokalnych do sprawdzenia. Lub możesz zainstalować własne za pośrednictwem
setResourceResolver
https://docs.oracle.com/javase ... olver(org.w3c.dom.ls.LSResourceResolver)
, ex:
Zobacz też
tutaj
https://docs.oracle.com/javase ... .html
kolejny samouczek.
Uważam, że domyślnym jest parsowanie DOM, możesz zrobić coś takiego z parserem SAX, który
również
https://blog.frankel.ch/use-lo ... -xml/
sprawdza
Anonimowy użytkownik
Potwierdzenie od:
opis pakietu
http://docs.oracle.com/javase/ ... .html
.
Anonimowy użytkownik
Potwierdzenie od:
Stwórz
(napisz), możesz sprawdzić zawartość podczas pisania, zamiast najpierw pisać, a potem czytać, aby sprawdzić. Prawdopodobnie możesz to zrobić za pomocą JDK API, aby zweryfikować XML, jeśli używasz programu zapisującego opartego na SAX: jeśli tak, po prostu połącz walidator z wywołaniem `` Validator.validate (źródło, wynik) '', gdzie źródło pochodzi z twojego writer., a wynik jest tam, gdzie dane wyjściowe powinny być.
Ponadto, jeśli używasz Stax do pisania treści (lub biblioteki, która używa lub może używać stax), Woodstox
również
https://github.com/FasterXML/woodstox
może bezpośrednio obsługiwać walidację podczas korzystania z XMLStreamWriter. Tutaj
post na blogu
http://www.cowtowncoder.com/bl ... .html
pokazując, jak to się robi:
Anonimowy użytkownik
Potwierdzenie od:
Sprawdza przed dtd i xsd.
5s dla pliku o wielkości 50 MB.
W debian squeeze znajduje się w pakiecie „libxerces-c-samples”.
Definicja dtd i xsd musi być w formacie xml! Nie można ich dostosowywać oddzielnie.
Anonimowy użytkownik
Potwierdzenie od:
XMLBeans
http://xmlbeans.apache.org/... Korzystając z narzędzia wiersza poleceń, XMLBeans automatycznie utworzy i zapakuje zestaw obiektów Java opartych na XSD. Obiekty te można następnie wykorzystać do zbudowania dokumentu XML na podstawie tego schematu.
Posiada wbudowaną obsługę walidacji schematów i może konwertować obiekty Java na dokument XML i odwrotnie.
Castor
http://www.castor.org/
i
JAXB
http://java.sun.com/developer/ ... jaxb/
to inne biblioteki Java, które służą temu samemu celowi co XMLBeans.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Jeśli chodzi o biblioteki, Xerces2 jest de facto standardem.
,
http://xerces.apache.org
który ma obie wersje
C++
http://xerces.apache.org/xerces-c/
i
Java
http://xerces.apache.org/xerces2-j/
.
Pamiętaj jednak, że jest to kłopotliwa decyzja. Ale znowu, walidacja XML względem plików XSD jest dość trudnym problemem.
Jeśli chodzi o narzędzie, które zrobi to za Ciebie,
XMLFox
http://www.xmlfox.com/xml_editor.htm
wydaje się przyzwoitym darmowym rozwiązaniem, ale bez korzystania z niego osobiście nie mogę powiedzieć na pewno.
Anonimowy użytkownik
Potwierdzenie od:
Sprawdzanie według schematów sieciowych
Sprawdzenie schematu lokalnego
Walidacja XML w trybie offline za pomocą Java Baeldung
https://stackoverflow.com/a/48447453/1485527
Anonimowy użytkownik
Potwierdzenie od:
Woodstox
https://github.com/FasterXML/woodstox, skonfiguruj parser StAX, aby sprawdzał poprawność schematu i analizował XML.
Jeśli wyjątki zostaną przechwycone, XML nie jest prawidłowy, w przeciwnym razie jest prawidłowy:
Uwaga
: Jeśli chcesz zweryfikować wiele plików, powinieneś spróbować ponownie użyć i , aby zmaksymalizować wydajność.
Anonimowy użytkownik
Potwierdzenie od:
Skończyło się na tym, że korzystałem z LiquidXML Studio 2008 (v6), które było dużo łatwiejsze w użyciu i od razu znajome (interfejs użytkownika jest bardzo podobny do Visual Basic 2008 Express, z którego często korzystam). Wada: w darmowej wersji nie ma opcji walidacji, więc musiałem skorzystać z 30-dniowej wersji próbnej.