Привет, сейчас я работаю над валидатором xml при весенней загрузке, но он не дает мне того же результата, который я получал при проверке с помощью онлайн-инструментов, хотя я уже использовал один и тот же файл .sch и файл .xml. может ли кто-нибудь помочь в этом?
Я уже создал API-интерфейс валидатора XML
ValidationController.java
package com.example.peppol_validator.controller;
import com.example.peppol_validator.service.XmlValidationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.http.ResponseEntity;
import org.xml.sax.SAXException;
import java.io.IOException;
@RestController
@RequestMapping("/api/validate")
public class ValidationController {
@Autowired
private final XmlValidationService xmlValidationService;
public ValidationController(XmlValidationService xmlValidationService) {
this.xmlValidationService = xmlValidationService;
}
@PostMapping
public ResponseEntity validateXml(@RequestParam("xmlFile") String xmlFile,
@RequestParam("schemaFile") String schemaFile) {
try {
xmlValidationService.validateXml(xmlFile, schemaFile);
return ResponseEntity.ok("XML is valid.");
} catch (SAXException e) {
return ResponseEntity.badRequest().body("Validation error: " + e.getMessage());
} catch (IOException e) {
return ResponseEntity.badRequest().body("IO error: " + e.getMessage());
}
}
}
XmlValidationService
package com.example.peppol_validator.service;
import org.apache.xerces.parsers.DOMParser;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service;
import org.xml.sax.InputSource;
import java.io.IOException;
import java.io.InputStream;
@Service
public class XmlValidationService {
private final ResourceLoader resourceLoader;
public XmlValidationService(ResourceLoader resourceLoader) {
this.resourceLoader = resourceLoader;
}
public void validateXml(String xmlPath, String schemaPath) throws IOException, SAXException {
Resource xmlResource = resourceLoader.getResource("classpath:" + xmlPath);
Resource schemaResource = resourceLoader.getResource("classpath:" + schemaPath);
try (InputStream xmlInputStream = xmlResource.getInputStream();
InputStream schemaInputStream = schemaResource.getInputStream()) {
DOMParser parser = new DOMParser();
parser.setFeature("http://apache.org/xml/features/nonvalid ... ternal-dtd", false);
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
parser.setFeature("http://apache.org/xml/features/validati ... l-checking", true);
// Set the schema for validation
parser.setProperty("http://apache.org/xml/properties/schema ... maLocation", schemaResource.getURL().toString());
// Use the schema input stream for validation
parser.setProperty("http://apache.org/xml/properties/schema ... maLocation", schemaPath);
parser.parse(new InputSource(xmlInputStream)); // Change here
System.out.println("XML is valid.");
} catch (SAXParseException e) {
System.out.println("XML is not valid. Error: " + e.getMessage());
throw e;
} catch (SAXException e) {
System.out.println("XML validation error: " + e.getMessage());
throw e;
}
}
}
sample.xml
urn:peppol:pint:billing-1@my-1
urn:peppol:bis:billing
PMY000676-205-20241024T065854
2024-10-24
2024-11-23
321
2023-11-30
MYR
ACC:COST:2114
3789627992
2024-10-18
2024-11-22
PO109831
793
53798679
2023-11-30
2100409
11
0965566776
11
Atch56890
Link to PDF Attchment
https://thelink
11
051312314
051312314
Monitor ERP Sdn Bhd
18, Jalan Excellent
Bandar Sunway
Petaling Jaya
52000
Sunway
No 18
MY
TIN20211100090911
GST
SST20211100090911
VAT
Monitor ERP Sdn Bhd
2023010000001
SENDIRIAN BERHAD
Ahmad, Danial
0320334568
ahmad.danial@monitor.com.my
NGTBCNTRLP1001
NGTBCNTRLP1001
Amazing HQ
Menara Amazing
Jalan Jalan
Petaling Jaya
47500
20
MY
SST20201234567
VAT
Amazing HQ
20201234567
Danny Khoo
0175622845
Danny.khoo@amazing.com.my
6715595
Amazing HQ
6715595
TTMY Audit
Unit4.02, M e n a r a M a y b a n k & l t ; / S t r e e t N a m e & g t ; < b r / > & l t ; A d d i t i o n a l S t r e e t N a m e & g t ; J a l a n P l u m b u m 8 & l t ; / A d d i t i o n a l S t r e e t N a m e & g t ; < b r / > & l t ; C i t y N a m e & g t ; S h a h A l a m & l t ; / C i t y N a m e & g t ; < b r / > & l t ; P o s t a l Z o n e & g t ; 4 7 1 1 0 & l t ; / P o s t a l Z o n e & g t ; < b r / > & l t ; C o u n t r y S u b e n t i t y & g t ; S u b e n t i t y & l t ; / C o u n t r y S u b e n t i t y & g t ; < b r / > & l t ; n s 3 : A d d r e s s L i n e & g t ; < b r / > & l t ; L i n e & g t ; K e p a y a n & l t ; / L i n e & g t ; < b r / > & l t ; / n s 3 : A d d r e s s L i n e & g t ; < b r / > & l t ; n s 3 : C o u n t r y & g t ; < b r / > & l t ; I d e n t i f i c a t i o n C o d e & g t ; M Y & l t ; / I d e n t i f i c a t i o n C o d e & g t ; < b r / > & l t ; / n s 3 : C o u n t r y & g t ; < b r / > & l t ; / n s 3 : P o s t a l A d d r e s s & g t ; < b r / > & l t ; n s 3 : P a r t y T a x S c h e m e & g t ; < b r / > & l t ; C o m p a n y I D & g t ; M Y 2 0 0 8 2 4 3 2 4 5 3 5 & l t ; / C o m p a n y I D & g t ; < b r / > & l t ; n s 3 : T a x S c h e m e & g t ; < b r / > & l t ; I D & g t ; V A T & l t ; / I D & g t ; < b r / > & l t ; / n s 3 : T a x S c h e m e & g t ; < b r / > & l t ; / n s 3 : P a r t y T a x S c h e m e & g t ; < b r / > & l t ; / n s 3 : T a x R e p r e s e n t a t i v e P a r t y & g t ; < b r / > & l t ; n s 3 : D e l i v e r y & g t ; < b r / > & l t ; A c t u a l D e l i v e r y D a t e & g t ; 2 0 2 3 - 1 1 - 3 0 & l t ; / A c t u a l D e l i v e r y D a t e & g t ; < b r / > & l t ; n s 3 : D e l i v e r y L o c a t i o n & g t ; < b r / > & l t ; I D s c h e m e I D = & q u o t ; 0 2 3 0 & q u o t ; & g t ; 7 3 0 0 0 1 0 0 0 0 0 0 1 & l t ; / I D & g t ; < b r / > & l t ; n s 3 : A d d r e s s & g t ; < b r / > & l t ; S t r e e t N a m e & g t ; J a l a n A m a z i n g 8 8 & l t ; / S t r e e t N a m e & g t ; < b r / > & l t ; A d d i t i o n a l S t r e e t N a m e & g t ; P a n d a m a r a n & l t ; / A d d i t i o n a l S t r e e t N a m e & g t ; < b r / > & l t ; C i t y N a m e & g t ; K l a n g & l t ; / C i t y N a m e & g t ; < b r / > & l t ; P o s t a l Z o n e & g t ; 4 1 2 0 0 & l t ; / P o s t a l Z o n e & g t ; < b r / > & l t ; n s 3 : A d d r e s s L i n e & g t ; < b r / > & l t ; L i n e & g t ; A m a z i n g S d n B h d & l t ; / L i n e & g t ; < b r / > & l t ; / n s 3 : A d d r e s s L i n e & g t ; < b r / > & l t ; n s 3 : C o u n t r y & g t ; < b r / > & l t ; I d e n t i f i c a t i o n C o d e & g t ; M Y & l t ; / I d e n t i f i c a t i o n C o d e & g t ; < b r / > & l t ; / n s 3 : C o u n t r y & g t ; < b r / > & l t ; / n s 3 : A d d r e s s & g t ; < b r / > & l t ; / n s 3 : D e l i v e r y L o c a t i o n & g t ; < b r / > & l t ; n s 3 : D e l i v e r y P a r t y & g t ; < b r / > & l t ; n s 3 : P a r t y N a m e & g t ; < b r / > & l t ; N a m e & g t ; M o n i t o r E R P & l t ; / N a m e & g t ; < b r / > & l t ; / n s 3 : P a r t y N a m e & g t ; < b r / > & l t ; / n s 3 : D e l i v e r y P a r t y & g t ; < b r / > & l t ; / n s 3 : D e l i v e r y & g t ; < b r / > & l t ; n s 3 : P a y m e n t M e a n s & g t ; < b r / > & l t ; P a y m e n t M e a n s C o d e n a m e = & q u o t ; C r e d i t t r a n s f e r & q u o t ; & g t ; 3 0 & l t ; / P a y m e n t M e a n s C o d e & g t ; < b r / > & l t ; P a y m e n t I D & g t ; 9 3 2 7 4 2 3 4 & l t ; / P a y m e n t I D & g t ; < b r / > & l t ; n s 3 : P a y e e F i n a n c i a l A c c o u n t & g t ; < b r / > & l t ; I D & g t ; 5 1 4 0 1 9 4 5 9 9 9 9 & l t ; / I D & g t ; < b r / > & l t ; N a m e & g t ; A h m a d D a n i a l & l t ; / N a m e & g t ; < b r / > & l t ; n s 3 : F i n a n c i a l I n s t i t u t i o n B r a n c h & g t ; < b r / > & l t ; I D & g t ; B I C 3 2 4 0 9 & l t ; / I D & g t ; < b r / > & l t ; / n s 3 : F i n a n c i a l I n s t i t u t i o n B r a n c h & g t ; < b r / > & l t ; / n s 3 : P a y e e F i n a n c i a l A c c o u n t & g t ; < b r / > & l t ; / n s 3 : P a y m e n t M e a n s & g t ; < b r / > & l t ; n s 3 : P a y m e n t T e r m s & g t ; < b r / > & l t ; N o t e & g t ; 6 0 D A Y S & l t ; / N o t e & g t ; < b r / > & l t ; / n s 3 : P a y m e n t T e r m s & g t ; < b r / > & l t ; n s 3 : A l l o w a n c e C h a r g e & g t ; < b r / > & l t ; C h a r g e I n d i c a t o r & g t ; t r u e & l t ; / C h a r g e I n d i c a t o r & g t ; < b r / > & l t ; A l l o w a n c e C h a r g e R e a s o n C o d e & g t ; F C & l t ; / A l l o w a n c e C h a r g e R e a s o n C o d e & g t ; < b r / > & l t ; A l l o w a n c e C h a r g e R e a s o n & g t ; D e l i v e r y s e r v i c e & l t ; / A l l o w a n c e C h a r g e R e a s o n & g t ; < b r / > & l t ; M u l t i p l i e r F a c t o r N u m e r i c & g t ; 0 & l t ; / M u l t i p l i e r F a c t o r N u m e r i c & g t ; < b r / > & l t ; A m o u n t c u r r e n c y I D = & q u o t ; M Y R & q u o t ; & g t ; 0 & l t ; / A m o u n t & g t ; < b r / > & l t ; B a s e A m o u n t c u r r e n c y I D = & q u o t ; M Y R & q u o t ; & g t ; 0 & l t ; / B a s e A m o u n t & g t ; < b r / > & l t ; n s 3 : T a x C a t e g o r y & g t ; < b r / > & l t ; I D & g t ; T & l t ; / I D & g t ; < b r / > & l t ; P e r c e n t & g t ; 1 0 & l t ; / P e r c e n t & g t ; < b r / > & l t ; n s 3 : T a x S c h e m e & g t ; < b r / > & l t ; I D & g t ; V A T & l t ; / I D & g t ; < b r / > & l t ; / n s 3 : T a x S c h e m e & g t ; < b r / > & l t ; / n s 3 : T a x C a t e g o r y & g t ; < b r / > & l t ; / n s 3 : A l l o w a n c e C h a r g e & g t ; < b r / > & l t ; n s 3 : T a x T o t a l & g t ; < b r / > & l t ; T a x A m o u n t c u r r e n c y I D = & q u o t ; M Y R & q u o t ; & g t ; 8 0 0 . 0 0 & l t ; / T a x A m o u n t & g t ; < b r / > & l t ; n s 3 : T a x S u b t o t a l & g t ; < b r / > & l t ; T a x A m o u n t c u r r e n c y I D = & q u o t ; M Y R & q u o t ; & g t ; 8 0 0 . 0 0 & l t ; / T a x A m o u n t & g t ; < b r / > & l t ; n s 3 : T a x C a t e g o r y & g t ; < b r / > & l t ; I D & g t ; T A X & l t ; / I D & g t ; < b r / > & l t ; P e r c e n t & g t ; 1 0 & l t ; / P e r c e n t & g t ; < b r / > & l t ; n s 3 : T a x S c h e m e & g t ; < b r / > & l t ; I D & g t ; G S T & l t ; / I D & g t ; < b r / > & l t ; / n s 3 : T a x S c h e m e & g t ; < b r / > & l t ; / n s 3 : T a x C a t e g o r y & g t ; < b r / > & l t ; / n s 3 : T a x S u b t o t a l & g t ; < b r / > & l t ; n s 3 : T a x S u b t o t a l & g t ; < b r / > & l t ; T a x a b l e A m o u n t c u r r e n c y I D = & q u o t ; M Y R & q u o t ; & g t ; 3 0 0 0 . 0 0 & l t ; / T a x a b l e A m o u n t & g t ; < b r / > & l t ; T a x A m o u n t c u r r e n c y I D = & q u o t ; M Y R & q u o t ; & g t ; 0 . 0 0 & l t ; / T a x A m o u n t & g t ; < b r / > & l t ; n s 3 : T a x C a t e g o r y & g t ; < b r / > & l t ; I D & g t ; E & l t ; / I D & g t ; < b r / > & l t ; P e r c e n t & g t ; 0 & l t ; / P e r c e n t & g t ; < b r / > & l t ; T a x E x e m p t i o n R e a s o n C o d e & g t ; E E E & l t ; / T a x E x e m p t i o n R e a s o n C o d e & g t ; < b r / > & l t ; T a x E x e m p t i o n R e a s o n & g t ; T e s t i n g E x e m p t T a x & l t ; / T a x E x e m p t i o n R e a s o n & g t ; < b r / > & l t ; n s 3 : T a x S c h e m e & g t ; < b r / > & l t ; I D & g t ; V A T & l t ; / I D & g t ; < b r / > & l t ; / n s 3 : T a x S c h e m e & g t ; < b r / > & l t ; / n s 3 : T a x C a t e g o r y & g t ; < b r / > & l t ; / n s 3 : T a x S u b t o t a l & g t ; < b r / > & l t ; / n s 3 : T a x T o t a l & g t ; < b r / > & l t ; n s 3 : L e g a l M o n e t a r y T o t a l & g t ; < b r / > & l t ; L i n e E x t e n s i o n A m o u n t c u r r e n c y I D = & q u o t ; M Y R & q u o t ; & g t ; 1 1 0 0 0 . 0 0 & l t ; / L i n e E x t e n s i o n A m o u n t & g t ; < b r / > 0
0
0.00
0.00
11800.00
1
Please send to gate 7
50
3000.00
Marvel
10
Mobile number 1223432432
130
Marvel Chair AB18 Blue
E
0
EEE
Testing Exempt Tax
GST
60.00
1
2
Please send to gate 5
50
3000.00
Marvel
20
Mobile number 1223432432
130
Marvel Chair AB18 Blue
T
10
VAT
60.00
1
3
Please send to gate 5
100
5000.00
Marvel
30
Mobile number 1223432432
130
Marvel Chair AB18 Blue
T
10
VAT
50.00
1
но продолжает показывать эту ошибку
[Warning] :1:1: http://www.w3.org/TR/xml-schema-1#Schem ... -rules.sch
[Error] :4:81: cvc-elt.1.a: Cannot find the declaration of element 'ns4:Invoice'.
Подробнее здесь: https://stackoverflow.com/questions/791 ... pring-boot
Как мне реализовать валидатор xml при весенней загрузке Java? ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Возникла ошибка при загрузке изображения по определенному пути при весенней загрузке
Anonymous » » в форуме JAVA - 0 Ответы
- 29 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Spring Boot: как создать 3 профиля и реализовать их при весенней загрузке
Anonymous » » в форуме JAVA - 0 Ответы
- 13 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Невозможно проанализировать поля joda DateTime в XML при весенней загрузке
Anonymous » » в форуме JAVA - 0 Ответы
- 44 Просмотры
-
Последнее сообщение Anonymous
-