XMLファイルを検証するためのユニットテスト(JUnitなど)をどのように記述しますか?
ドキュメントをXMLファイルとして作成するアプリケーションがあります。このXML構造を検証するために、XMLモックオブジェクトを作成し、その各要素を「実際の」XMLファイル内の要素と比較する必要がありますか?
IF SO:次に、そうするためのベストプラクティスは何ですか?例えば「実際の」XMLファイルのXMLデータを使用して、モックオブジェクトを作成できますか?等.
IF NOT:有効な単体テストとは何ですか?
XMLファイルを検証するには、まず有効なXMLドキュメントの構造を記述するXMLスキーマ定義(XSD)が必要です。 XSDファイルの仕様は W3C にあります。
XSDを構築する方法に入るには、XMLの構造を理解する必要があります。
実際のJavaこの実装の詳細については、チェックアウト XSDファイルに対してXMLファイルを検証する最良の方法は何ですか? StackOverflowで。
その投稿からの関連コード:
import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
...
URL schemaFile = new URL("http://Java.Sun.com/xml/ns/j2ee/web-app_2_4.xsd");
Source xmlFile = new StreamSource(new File("web.xml"));
SchemaFactory schemaFactory = SchemaFactory
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
try {
validator.validate(xmlFile);
System.out.println(xmlFile.getSystemId() + " is valid");
} catch (SAXException e) {
System.out.println(xmlFile.getSystemId() + " is NOT valid");
System.out.println("Reason: " + e.getLocalizedMessage());
}