久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

使用 Java 代碼進行 XML 驗證

XML validation using Java Code(使用 Java 代碼進行 XML 驗證)
本文介紹了使用 Java 代碼進行 XML 驗證的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我需要一些代碼示例來展示如何根據架構驗證 xml 文件.下面是我的 XML 文檔:

I need some code sample which shows how I can validate a xml file against a schema. Below is my XML document:

<birthdate>
    <month>January</month>
    <day>21</day>
    <year>1983</year>
</birthdate>

我要驗證上述 XML 的架構是:

The schema against which I want to validate the above XML is:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
        schemaLocation="http://www.w3.org/2001/xml.xsd" />

  <xs:element name="birthdate">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="month" type="xs:string" />
        <xs:element name="day" type="xs:int" />
        <xs:element name="year" type="xs:int" />
      </xs:sequence>  
    </xs:complexType>
  </xs:element>
</xs:schema>

現在有人可以幫我編寫 Java 代碼,如果 XML 文檔按照我指定的模式有效,則該代碼將這些作為輸入并給出正確的輸出?

Now can some one help me write the Java code that will take these as input and give proper output if the XML doc is a valid as per the schema I specified?

現在我在理解下面的代碼時遇到了問題,比如 MySAXHandler 上的方法是如何被調用的,因為類沒有被實例化并且方法沒有被顯式調用.誰能解釋一下?還有有什么方法可以直接傳遞文件而不是通過字符串傳遞.

Now i have issue understanding the below code like how the methods on MySAXHandler are getting calling becoz the class is not instantiated and methods are not called explicitely. Can anyone explain? And also is there any way i can pass the files direcly instead of passing through Strings.

代碼是 -

import java.io.StringReader;

import javax.xml.XMLConstants;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.validation.SchemaFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;

public class XMLval {
  public static void main(String args[])throws Exception {
    SAXParserFactory spf = SAXParserFactory.newInstance();
    SAXParser parser = null;
    spf.setNamespaceAware(true);
    try {
     SchemaFactory sf =
                     SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
     spf.setSchema(sf.newSchema(new SAXSource(new InputSource(new StringReader(schemaString)))));
 parser = spf.newSAXParser();
}
catch(SAXException e) {
  e.printStackTrace(System.err);
  System.exit(1);    
} 
catch(ParserConfigurationException e) {
  e.printStackTrace(System.err);
  System.exit(1);    
}
MySAXHandler handler = new MySAXHandler(); 
System.out.println(schemaString);
parser.parse(new InputSource(new StringReader(xmlString)), handler);


}



static String xmlString = "<?xml version="1.0"?>" +
  "<birthdate>" +
  "<month>January</month>" +
  "<day>21</day>" +
  "<year>1983</year>" +
  "</birthdate>";



static String schemaString ="<?xml version="1.0" encoding="UTF-8"?>" +

  "<xs:element name="birthdate">" +
  "<xs:complexType>" +
  "<xs:sequence>" +
  "<xs:element name="month" type="xs:string"/>" +
  "<xs:element name="day" type="xs:int"/>" +
  "<xs:element name="year" type="xs:int" />" +
  "</xs:sequence>" +
                  "</xs:complexType>" +
                  "</xs:element>" +
                  "</xs:schema>";
}

class MySAXHandler extends DefaultHandler {
  public void startDocument() {
    System.out.println("Start document: ");
  }    
    public void endDocument()  {
    System.out.println("End document: ");
  }

  public void startElement(String uri, String localName, String qname, 
                                                               Attributes attr)
  {
    System.out.println("Start element: local name: " + localName + " qname: " 
                                                        + qname + " uri: "+uri);
    int attrCount = attr.getLength();
    if(attrCount>0) {
      System.out.println("Attributes:"); 
      for(int i = 0 ; i<attrCount ; i++) {
        System.out.println("  Name : " + attr.getQName(i)); 
        System.out.println("  Type : " + attr.getType(i)); 
        System.out.println("  Value: " + attr.getValue(i)); 
      }
    } 
  }

  public void endElement(String uri, String localName, String qname) {
    System.out.println("End element: local name: " + localName + " qname: "
                                                         + qname + " uri: "+uri);
  }

  public void characters(char[] ch, int start, int length) {
    System.out.println("Characters: " + new String(ch, start, length));
  }
}

推薦答案

你可以試試JDOM庫.

You can try JDOM library.

http://www.jdom.org/docs/faq.html#a0360

這篇關于使用 Java 代碼進行 XML 驗證的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

How to wrap text around components in a JTextPane?(如何在 JTextPane 中的組件周圍環繞文本?)
MyBatis, how to get the auto generated key of an insert? [MySql](MyBatis,如何獲取插入的自動生成密鑰?[MySql])
Inserting to Oracle Nested Table in Java(在 Java 中插入 Oracle 嵌套表)
Java: How to insert CLOB into oracle database(Java:如何將 CLOB 插入 oracle 數據庫)
Why does Spring-data-jdbc not save my Car object?(為什么 Spring-data-jdbc 不保存我的 Car 對象?)
Use threading to process file chunk by chunk(使用線程逐塊處理文件)
主站蜘蛛池模板: 国产精品久久久乱弄 | 成人av在线播放 | 国产精品美女久久久久aⅴ国产馆 | 五月婷婷亚洲 | 亚洲一区二区三区视频 | 国产日韩欧美在线观看 | 一区二区三区四区在线免费观看 | 精品一区二区三区在线观看国产 | 一区二区三区国产精品 | 亚洲午夜视频 | 国产91在线 | 亚洲 | 97久久超碰| 国产一级片一区二区 | 狠狠操狠狠操 | 国产在线一级片 | 欧美成年黄网站色视频 | 日韩三级免费网站 | 影音av | 狠狠操av| 欧美在线视频一区二区 | 欧美中文字幕一区二区三区 | 免费视频一区二区 | 国产中文在线 | 在线免费观看成年人视频 | 久久久精| 亚洲精品二区 | 91精品久久久久 | 亚洲精品视频在线观看视频 | 亚洲激情第一页 | 九九av| 91大神在线资源观看无广告 | 亚洲精品福利在线 | 女同久久 | 在线成人精品视频 | 日本高清视频在线播放 | 一区二区视频在线 | 亚洲国产成人久久综合一区,久久久国产99 | 国产视频久久久久 | 亚洲欧洲精品成人久久奇米网 | 日本激情视频在线播放 | 热久色 |