Как мне реализовать валидатор xml при весенней загрузке Java?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как мне реализовать валидатор xml при весенней загрузке Java?

Сообщение Anonymous »

Привет, сейчас я работаю над валидатором 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»