
XMLReader 클래스는 XML 문서를 파싱하는 데 사용되며, setRelaxNGSchemaSource 메서드를 사용하여 RelaxNG 스키마를 로드할 수 있습니다.
1. RelaxNG 스키마를 로드하는 방법은 다음과 같습니다.
- RelaxNG 스키마 파일을 읽어 들여 String 객체로 변환합니다.
- XMLReader 클래스의 setRelaxNGSchemaSource 메서드를 호출하여 스키마를 로드합니다.
2. 스키마 유효성 검사를 수행하는 방법은 다음과 같습니다.
- XMLReader 클래스의 validate 메서드를 호출하여 XML 문서를 스키마와 비교합니다.
- validate 메서드는 XML 문서가 스키마에 맞는지 확인하고, 맞지 않으면 예외를 발생시킵니다.
3. XMLReader 클래스의 validate 메서드를 호출하는 예제는 다음과 같습니다.
#hostingforum.kr
java
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import java.io.StringReader;
import java.io.StringWriter;
public class Main {
public static void main(String[] args) throws ParserConfigurationException, Exception {
// RelaxNG 스키마 파일을 읽어 들여 String 객체로 변환합니다.
String schema = "...";
// XMLReader 클래스를 생성합니다.
XMLReader reader = DocumentBuilderFactory.newInstance().newXMLReader();
// RelaxNG 스키마를 로드합니다.
reader.setRelaxNGSchemaSource(new StreamSource(new StringReader(schema)));
// XML 문서를 파싱합니다.
String xml = "...";
InputSource input = new InputSource(new StringReader(xml));
reader.parse(input);
// 스키마 유효성 검사를 수행합니다.
try {
reader.validate();
System.out.println("XML 문서는 스키마에 맞습니다.");
} catch (Exception e) {
System.out.println("XML 문서는 스키마에 맞지 않습니다.");
System.out.println(e.getMessage());
}
}
}
이 예제에서는 RelaxNG 스키마를 로드하고, XML 문서를 파싱한 후 스키마 유효성 검사를 수행합니다.
2025-08-09 20:13