急!急!!如何验证xml文件的有效性?

sAS112UUUYY111 2010-03-31 11:02:43
如何验证xml文件的有效性?
请求帮助,谢谢
...全文
185 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kbyst 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sas112uuuyy111 的回复:]

用sax验证可以吗?
[/Quote]

用sax不也一样吗,程序上没多大差别,具体的差别查一下API
sAS112UUUYY111 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhuce0001 的回复:]
不知你说的是用程序么,如果不是用程序的话,可以用软件比如xml writer
[/Quote]
是用程序 有思路也可以
爱种鱼的猫 2010-04-01
  • 打赏
  • 举报
回复
不知你说的是用程序么,如果不是用程序的话,可以用软件比如xml writer
sAS112UUUYY111 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sas112uuuyy111 的回复:]
用sax验证可以吗?
[/Quote]
求解
kbyst 2010-03-31
  • 打赏
  • 举报
回复
建立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文件进行手工校验

bayougeng 2010-03-31
  • 打赏
  • 举报
回复
应该可以用一个dtd文件来验证的吧?
蹭饭熊 2010-03-31
  • 打赏
  • 举报
回复

////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>
验证码识别 2010-03-31
  • 打赏
  • 举报
回复
up, xue xi
sAS112UUUYY111 2010-03-31
  • 打赏
  • 举报
回复
有这方面的思路吗?
sAS112UUUYY111 2010-03-31
  • 打赏
  • 举报
回复
用sax验证可以吗?

62,584

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧