会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132441个问题

代码会报错,没看懂报的是啥错误

<?xml version="1.0" encoding="UTF-8" ?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="books.xsd">
    <book id="1001">
        <name>java开发实战</name>
        <author>张小一</author>
        <price>36.1</price>
    </book>
    <book id="1022">
        <name>mysql</name>
        <author>张小二</author>
        <price>78.1</price>
    </book>
</books>
<?xml version="1.0"   encoding="UTF-8" ?>
<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="books">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="book" maxOccurs="unbounded">
                    <xs:complexTypen>
                        <xs:squence>
                            <xs:element name="name" type="xs:string"></xs:element>
                            <xs:element name="author" type="xs:string"></xs:element>
                            <xs:element name="price" type="xs:double"></xs:element>
                        </xs:squence>
                        <xs:attribute name="id" type="xs:positiveInteger" use="required"></xs:attribute>
                    </xs:complexTypen>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

图片.png

图片.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2342楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2343楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2344楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2345楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2346楼

2020 12 20 21:10----------------------

package com.bjsxt.dom;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class TestDOMParse {
   public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
      // 1) 创建一个DocumentBuilderFactory的对象
      DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
      // 2) 创建一个DocumentBuilder对象
      DocumentBuilder db=dbf.newDocumentBuilder();
      // 3) 通过DocumentBuilder的parse(...)方法得到Document对象
      Document doc=db.parse("book.xml");
      // 4) 通过getElementsByTagName(...)方法获取到节点的列表
      NodeList bookList=doc.getElementsByTagName("book");
      //System.out.println(bookList.getLength());
      // 5) 通过for循环遍历每一个节点
      for(int i=0;i<bookList.getLength();i++){
         //6)   得到每个节点的属性和属性值
         Node book=bookList.item(i);
         NamedNodeMap attrs=book.getAttributes(); //得到了属性的集合
         //循环遍历每一个属性
         for(int j=0;j<attrs.getLength();j++){
            //得到每一个属性
            Node id=attrs.item(j);
            System.out.println("属性的名称:"+id.getNodeName()+"\t"+id.getNodeValue());
         }
      }
      System.out.println("\n每个节点的名和节点的值");
//    7) 得到每个节点的节点名和节点值
      for(int i=0;i<bookList.getLength();i++){
         //得到每一个book节点
         Node book=bookList.item(i);
         NodeList subNode=book.getChildNodes();
         System.out.println("子节点的个数:"+subNode.getLength());
         //使用for循环遍历每一book的子节点
         for(int j=0;j<subNode.getLength();j++){
            Node childNode=subNode.item(j);
            //System.out.println(childNode.getNodeName());
            short type=childNode.getNodeType(); //获取节点的类型
            if(type==Node.ELEMENT_NODE){
               System.out.println("节点的名称:"+childNode.getNodeName()+"\t"+childNode.getTextContent());
            }

         }
      }

   }
}
<?xml version="1.0" encoding="UTF-8"?>
<books>
   <book id="1001">
      <name>java开发实战</name>
      <author>张小三</author>
      <price>98.5</price>
   </book>
   <book id="1002">
      <name>mysql从删库到跑路</name>
      <author>王一一</author>
      <price>89.7</price>
   </book>
</books>

YO)FESE6C}X8$OM($`SPYUU.png

7个节点是7个?


JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2347楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程和并发编程(旧) 2348楼

2020 12 20----------

package com.bjsxt.schema;

import java.io.File;
import java.io.IOException;

import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

import org.xml.sax.SAXException;

public class Test {
   public static void main(String[] args) throws SAXException {
      //(1)创建SchemaFactory工厂
      SchemaFactory sch=SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
      //(2)建立验证文件对象
      File schemaFile=new File("book.xsd");
      //(3)利用SchemaFactory工厂对象,接收验证的文件对象,生成Schema对象
      Schema schema=sch.newSchema(schemaFile);
      //(4)产生对此schema的验证器
      Validator validator=schema.newValidator();
      //(5)要验证的数据(准备数据源)
      Source source=new StreamSource("book.xml");
      //(6)开始验证
      try {
         validator.validate(source);
         System.out.println("成功");
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
         System.out.println("失败");
      }
   }
}
"C:\Program Files\Java\jdk1.8.0_261\bin\java.exe" "-javaagent:E:\IDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=50729:E:\IDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=GBK -classpath "C:\Program Files\Java\jdk1.8.0_261\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_261\jre\lib\rt.jar;E:\IDEA\第三阶段\out\production\schemaProject" com.bjsxt.schema.Test
Exception in thread "main" org.xml.sax.SAXParseException; schema_reference.4: 无法读取方案文档 'file:/E:/IDEA/%E7%AC%AC%E4%B8%89%E9%98%B6%E6%AE%B5/book.xsd', 原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>。
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:306)
	at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4207)
	at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:4190)
	at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument1(XSDHandler.java:2513)
	at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2220)
	at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:581)
	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:610)
	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:569)
	at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:535)
	at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:269)
	at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:638)
	at javax.xml.validation.SchemaFactory.newSchema(SchemaFactory.java:654)
	at com.bjsxt.schema.Test.main(Test.java:21)
Caused by: java.io.FileNotFoundException: E:\IDEA\第三阶段\book.xsd (系统找不到指定的文件。)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
	at java.io.FileInputStream.<init>(FileInputStream.java:93)
	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:90)
	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:188)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:622)
	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:150)
	at com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:583)
	at com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:686)
	at com.sun.org.apache.xerces.internal.impl.xs.opti.SchemaDOMParser.parse(SchemaDOMParser.java:531)
	at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2208)
	... 8 more

Process finished with exit code 1

schemaProject.zip

$5`0832T0CDYF5[$7B[JHLW.png

运行不了..

JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2349楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637