急!急!!如何验证xml文件的有效性? 如何验证xml文件的有效性?请求帮助,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ////XSDTest.java: import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXParseException; import org.w3c.dom.Document; public class XSDTest implements ErrorHandler { public static void main(String[] args) { DocumentBuilderFactory docBuilderFactory = null; DocumentBuilder docBuilder = null; try { docBuilderFactory = DocumentBuilderFactory.newInstance(); docBuilderFactory.setValidating(true); docBuilderFactory.setNamespaceAware(true); docBuilder = docBuilderFactory.newDocumentBuilder(); docBuilder.setErrorHandler(new XSDTest()); Document doc = docBuilder.parse("WellFormed.xml"); } catch(Exception se) { se.printStackTrace(); } } public void error(SAXParseException se) { System.out.println("Caught an error:" + se.getMessage()); //se.printStackTrace(); } public void fatalError(SAXParseException se) { System.out.println("Caught an fatal error."); se.printStackTrace(); } public void warning(SAXParseException se) { System.out.println("Caught a warning."); se.printStackTrace(); } } ////WellFormed.xml <?xml version="1.0" encoding="utf-8"?> <Test xmlns="WellFormed" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="WellFormed WellFormed.xsd"> <Name>John < Doe</Name> <!--<temp/>--> </Test> ////WellFormed.xsd <?xml version="1.0" ?> <xs:schema targetNamespace="WellFormed" xmlns="WellFormed" xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified"> <xs:element name="Test"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 应该可以用一个dtd文件来验证的吧? 建立dtd文件来对xml定义规则然后使用dom4j,对文件进行验证document = DocumentHelper.createDocument(); document.setDocType(new DefaultDocumentType("随便写,只是对DTD的描述","你的DTD文件的路径")); FileInputStream is = new FileInputStream(file); InputStreamReader in = new InputStreamReader(is, "utf-8"); SAXReader builder = new SAXReader(); builder.setValidation(true); builder.setEntityResolver(new EntityResolver() { public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { InputSource is = new InputSource( "你的DTD文件所在路径"); return is; } });注:也可以使用xmlspy对xml文件进行手工校验 不知你说的是用程序么,如果不是用程序的话,可以用软件比如xml writer 用sax不也一样吗,程序上没多大差别,具体的差别查一下API 怎么访问在JTextField中的数据 要写一个监控程序判断服务器上的JAVA进程 Java问题,高级篇 jsp弹出一个对话框,服务器端代码弹出对话框 Java内存空间的问题 一个比较有难度的问题,请高手进 请教这条sql语句有错吗?? 求助!! 请问java里怎么样生成随即数啊 executeQuery("select password from userlist where adminname="+adminname+"")写法对吗? Runtime.getRuntime().exec的输出问题?? jsp表单中如何动态的获取select的值
////XSDTest.java:
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXParseException;
import org.w3c.dom.Document;
public class XSDTest implements ErrorHandler
{
public static void main(String[] args)
{
DocumentBuilderFactory docBuilderFactory = null;
DocumentBuilder docBuilder = null;
try
{
docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setValidating(true);
docBuilderFactory.setNamespaceAware(true);
docBuilder = docBuilderFactory.newDocumentBuilder();
docBuilder.setErrorHandler(new XSDTest());
Document doc = docBuilder.parse("WellFormed.xml");
}
catch(Exception se)
{
se.printStackTrace();
}
}
public void error(SAXParseException se)
{
System.out.println("Caught an error:" + se.getMessage());
//se.printStackTrace();
}
public void fatalError(SAXParseException se)
{
System.out.println("Caught an fatal error.");
se.printStackTrace();
}
public void warning(SAXParseException se)
{
System.out.println("Caught a warning.");
se.printStackTrace();
}
}
////WellFormed.xml
<?xml version="1.0" encoding="utf-8"?>
<Test
xmlns="WellFormed"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="WellFormed WellFormed.xsd">
<Name>John < Doe</Name>
<!--<temp/>-->
</Test>
////WellFormed.xsd
<?xml version="1.0" ?>
<xs:schema
targetNamespace="WellFormed"
xmlns="WellFormed"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="qualified"
elementFormDefault="qualified">
<xs:element name="Test">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
document = DocumentHelper.createDocument();
document.setDocType(new DefaultDocumentType("随便写,只是对DTD的描述","你的DTD文件的路径")); FileInputStream is = new FileInputStream(file);
InputStreamReader in = new InputStreamReader(is, "utf-8");
SAXReader builder = new SAXReader();
builder.setValidation(true);
builder.setEntityResolver(new EntityResolver() {
public InputSource resolveEntity(String publicId,
String systemId) throws SAXException, IOException {
InputSource is = new InputSource(
"你的DTD文件所在路径");
return is;
} });
注:也可以使用xmlspy对xml文件进行手工校验
用sax不也一样吗,程序上没多大差别,具体的差别查一下API