String 如何在java中验证xml字符串?
我在这里看到了一些示例,它们展示了如何验证正在工作的xml文件,但我的问题是:如何修改此代码以验证字符串String 如何在java中验证xml字符串?,string,validation,String,Validation,我在这里看到了一些示例,它们展示了如何验证正在工作的xml文件,但我的问题是:如何修改此代码以验证字符串 import javax.xml.XMLConstants; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.*; import org.xml.sax.ErrorHandler; import org.xml.sax.
import javax.xml.XMLConstants;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import java.util.List;
import java.io.*;
import java.util.LinkedList;
import java.net.URL;
import java.sql.Clob;
import java.sql.SQLException;
public class Validate {
public String validaXML(){
try {
Source xmlFile = new StreamSource(new File("C:\\Users\\Desktop\\info.xml"));
URL schemaFile = new URL("https://www.w3.org/2001/XMLSchema.xsd");
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
final List exceptions = new LinkedList();
validator.setErrorHandler(new ErrorHandler()
{
@Override
public void warning(SAXParseException exception) throws SAXException
{
exceptions.add(exception);
}
@Override
public void fatalError(SAXParseException exception) throws SAXException
{
exceptions.add(exception);
}
@Override
public void error(SAXParseException exception) throws SAXException
{
exceptions.add(exception);
}
});
validator.validate(xmlFile);
} catch (SAXException ex) {
System.out.println( ex.getMessage());
return ex.getMessage().toString();
} catch (IOException e) {
System.out.println( e.getMessage());
return e.getMessage().toString();
}
return "Valid";
}
public static void main(String[] args) {
String res;
Validate val = new Validate();
res=val.validaXML();
System.out.println(res);
}
}
我试过这样做:
Source xmlFile = new StreamSource("<Project><Name>sample</Name></Project>");
它可以编译,但我得到了:
无协议:样本
感谢您的阅读,我将感谢您的意见这不起作用的原因是您使用的构造函数是StreamSourceString systemId。StreamSource上的字符串构造函数不接受xml 使用构造函数StreamSourceReader reader并生成一个读取器,例如
new StreamSource(new StringReader("xml here"))
或者您可以使用构造函数StreamSourceInputStream inputStream作为
这不起作用的原因是您使用的构造函数是StreamSourceString systemId。StreamSource上的字符串构造函数不接受xml 使用构造函数StreamSourceReader reader并生成一个读取器,例如
new StreamSource(new StringReader("xml here"))
或者您可以使用构造函数StreamSourceInputStream inputStream作为
这应该可以工作:new StreamSourcenew StringReader\u您的字符串\u此处这应该可以工作:new StreamSourcenew StringReader\u您的字符串\u此处