我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java中org.w3c.dom.Document类方法引用报错怎么办

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java中org.w3c.dom.Document类方法引用报错怎么办

这篇文章主要介绍了Java中org.w3c.dom.Document类方法引用报错怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

org.w3c.dom.Document 类方法引用报错

The method setXmlVersion(String) is undefined for the type Document

开发时我们可能会碰到这样的问题,它产生的原因是我们实际需要调用的是 JDK 环境 rt.jar 下的 org.w3c.dom.org.w3c.dom.Document ,但事实上 Eclipse 等 IDE 工具此时自动为我们调用的是 J2EE 中的 xerces\xmlParserAPIs\2.6.2\xmlParserAPIs-2.6.2.jar ,这一点通过 Ctrl 左键点击 Document 类可以发现。

发现问题出在哪里就好解决了

我们需要做的是调整 Eclipse 的调用顺序

项目右键 > Properties > Java Build Path > 右边 Order and Export

把 JRE System Library 通过点击 Up 按钮放到 J2EE(Maven Dependencies) 的上面即可。

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想

首先来了解点Java DOM 的 API:

1.解析器工厂类:DocumentBuilderFactory

创建的方法:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

2.解析器:DocumentBuilder

创建方法:通过解析器工厂类来获得

DocumentBuilder db = dbf.newDocumentBuilder();

3.文档树模型Document

创建方法:a.通过xml文档 Document doc = db.parse("bean.xml"); b.将需要解析的xml文档转化为输入流 InputStream is = new FileInputStream("bean.xml");

Document doc = db.parse(is);

Document对象代表了一个XML文档的模型树,所有的其他Node都以一定的顺序包含在Document对象之内,排列成一个树状结构,以后对XML文档的所有操作都与解析器无关,

直接在这个Document对象上进行操作即可;

包含的方法:

Java中org.w3c.dom.Document类方法引用报错怎么办

Java中org.w3c.dom.Document类方法引用报错怎么办

4.节点列表类NodeList

NodeList代表了一个包含一个或者多个Node的列表,根据操作可以将其简化的看做为数组

Java中org.w3c.dom.Document类方法引用报错怎么办

5.节点类Node

Node对象是DOM中最基本的对象,代表了文档树中的抽象节点。但在实际使用中很少会直接使用Node对象,而是使用Node对象的子对象Element,Attr,Text等

6.元素类Element

是Node类最主要的子对象,在元素中可以包含属性,因而Element中有存取其属性的方法

Java中org.w3c.dom.Document类方法引用报错怎么办

7.属性类Attr

代表某个元素的属性,虽然Attr继承自Node接口,但因为Attr是包含在Element中的,但并不能将其看做是Element的子对象,因为Attr并不是DOM树的一部分

基本的知识就到此结束,更加具体的大家可以参阅JDK API文档

实战:

1.使用DOM来遍历XML文档中的全部内容并且插入元素:

school.xml文档:

<?xml version = "1.0" encoding = "utf-8"?><School>    <Student>        <Name>沈浪</Name>        <Num>1006010022</Num>        <Classes>信管2</Classes>        <Address>浙江杭州3</Address>        <Tel>123456</Tel>    </Student>    <Student>        <Name>沈1</Name>        <Num>1006010033</Num>        <Classes>信管1</Classes>        <Address>浙江杭州4</Address>        <Tel>234567</Tel>    </Student>    <Student>        <Name>沈2</Name>        <Num>1006010044</Num>        <Classes>生工2</Classes>        <Address>浙江杭州1</Address>        <Tel>345678</Tel>    </Student>    <Student>        <Name>沈3</Name>        <Num>1006010055</Num>        <Classes>电子2</Classes>        <Address>浙江杭州2</Address>        <Tel>456789</Tel>    </Student></School>

DomDemo.java

package xidian.sl.dom;import java.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.crimson.tree.XmlDocument;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;public class DomDemo {        public static void queryXml(){        try{            //得到DOM解析器的工厂实例            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();            //从DOM工厂中获得DOM解析器            DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();            //把要解析的xml文档读入DOM解析器            Document doc = dbBuilder.parse("class="lazy" data-src/xidian/sl/dom/school.xml");            System.out.println("处理该文档的DomImplementation对象  = "+ doc.getImplementation());            //得到文档名称为Student的元素的节点列表            NodeList nList = doc.getElementsByTagName("Student");            //遍历该集合,显示结合中的元素及其子元素的名字            for(int i = 0; i< nList.getLength() ; i ++){                Element node = (Element)nList.item(i);                System.out.println("Name: "+ node.getElementsByTagName("Name").item(0).getFirstChild().getNodeValue());                System.out.println("Num: "+ node.getElementsByTagName("Num").item(0).getFirstChild().getNodeValue());                System.out.println("Classes: "+ node.getElementsByTagName("Classes").item(0).getFirstChild().getNodeValue());                System.out.println("Address: "+ node.getElementsByTagName("Address").item(0).getFirstChild().getNodeValue());                System.out.println("Tel: "+ node.getElementsByTagName("Tel").item(0).getFirstChild().getNodeValue());            }                    }catch (Exception e) {            // TODO: handle exception            e.printStackTrace();        }    }        public static void insertXml(){        Element school = null;        Element student = null;        Element name = null;        Element num = null;        Element classes = null;        Element address = null;        Element tel = null;        try{            //得到DOM解析器的工厂实例            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();            //从DOM工厂中获得DOM解析器            DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();            //把要解析的xml文档读入DOM解析器            Document doc = dbBuilder.parse("class="lazy" data-src/xidian/sl/dom/school.xml");            //得到文档名称为Student的元素的节点列表            NodeList nList = doc.getElementsByTagName("School");            school = (Element)nList.item(0);            //创建名称为Student的元素            student = doc.createElement("Student");            //设置元素Student的属性值为231            student.setAttribute("examId", "23");            //创建名称为Name的元素            name = doc.createElement("Name");            //创建名称为 香香 的文本节点并作为子节点添加到name元素中            name.appendChild(doc.createTextNode("香香"));            //将name子元素添加到student中            student.appendChild(name);                        num = doc.createElement("Num");            num.appendChild(doc.createTextNode("1006010066"));            student.appendChild(num);                        classes = doc.createElement("Classes");            classes.appendChild(doc.createTextNode("眼视光5"));            student.appendChild(classes);                        address = doc.createElement("Address");            address.appendChild(doc.createTextNode("浙江温州"));            student.appendChild(address);                        tel = doc.createElement("Tel");            tel.appendChild(doc.createTextNode("123890"));            student.appendChild(tel);                        //将student作为子元素添加到树的根节点school            school.appendChild(student);            //将内存中的文档通过文件流生成insertSchool.xml,XmlDocument位于crison.jar下            ((XmlDocument)doc).write(new FileOutputStream("class="lazy" data-src/xidian/sl/dom/insertSchool.xml"));            System.out.println("成功");        }catch (Exception e) {            // TODO: handle exception            e.printStackTrace();        }        }    public static void main(String[] args){        //读取        DomDemo.queryXml();        //插入        DomDemo.insertXml();    }}

运行后结果:

Java中org.w3c.dom.Document类方法引用报错怎么办

然后到目录下查看生成的xml文件:

Java中org.w3c.dom.Document类方法引用报错怎么办

打开查看内容:

Java中org.w3c.dom.Document类方法引用报错怎么办

上面添加元素后输出的文件与之前的文件不是同一个文件,如果需要输出到原文件中,那么只要将路径改为原文间路径即可:class="lazy" data-src/xidian/sl/dom/school.xml

2.创建XML过程与插入过程相似,就是Document需要创建

package xidian.sl.dom;import java.io.FileOutputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.apache.crimson.tree.XmlDocument;import org.w3c.dom.Document;import org.w3c.dom.Element;public class CreateNewDom {        public static void createDom(){        Document doc;        Element school,student;        Element name = null;        Element num = null;        Element classes = null;        Element address = null;        Element tel = null;        try{            //得到DOM解析器的工厂实例            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();            //从DOM工厂中获得DOM解析器            DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();            //创建文档树模型对象            doc = dbBuilder.newDocument();            if(doc != null){                //创建school元素                school = doc.createElement("School");                //创建student元素                student = doc.createElement("Student");                //设置元素Student的属性值为231                student.setAttribute("examId", "23");                //创建名称为Name的元素                name = doc.createElement("Name");                //创建名称为 香香 的文本节点并作为子节点添加到name元素中                name.appendChild(doc.createTextNode("香香"));                //将name子元素添加到student中                student.appendChild(name);                                num = doc.createElement("Num");                num.appendChild(doc.createTextNode("1006010066"));                student.appendChild(num);                                classes = doc.createElement("Classes");                classes.appendChild(doc.createTextNode("眼视光5"));                student.appendChild(classes);                                address = doc.createElement("Address");                address.appendChild(doc.createTextNode("浙江温州"));                student.appendChild(address);                                tel = doc.createElement("Tel");                tel.appendChild(doc.createTextNode("123890"));                student.appendChild(tel);                                //将student作为子元素添加到树的根节点school                school.appendChild(student);                //添加到文档树中                doc.appendChild(school);                //将内存中的文档通过文件流生成insertSchool.xml,XmlDocument位于crison.jar下                ((XmlDocument)doc).write(new FileOutputStream("class="lazy" data-src/xidian/sl/dom/createSchool.xml"));                System.out.println("创建成功");            }        }catch (Exception e) {            // TODO: handle exception            e.printStackTrace();        }    }    public static void main(String[] args) {        CreateNewDom.createDom();    }}

运行结果:

Java中org.w3c.dom.Document类方法引用报错怎么办

DOM的操作应该还是非常简单明了的,掌握了没哦。

感谢你能够认真阅读完这篇文章,希望小编分享的“Java中org.w3c.dom.Document类方法引用报错怎么办”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java中org.w3c.dom.Document类方法引用报错怎么办

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java中org.w3c.dom.Document类方法引用报错怎么办

这篇文章主要介绍了Java中org.w3c.dom.Document类方法引用报错怎么办,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。org.w3c.dom.Document
2023-06-20

Java中File类方法怎么用

今天小编给大家分享一下Java中File类方法怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。File类概述File类是
2023-06-29

java中write方法使用报错怎么解决

在Java中,`write`方法是用于将字符或字节写入输出流的方法。如果您遇到了`write`方法使用报错,可以根据具体的错误信息来解决问题。以下是一些常见的错误和解决方法:1. `write`方法未定义:这可能是因为您没有正确导入相关的包
2023-08-08

Java中Object类的方法怎么用

这篇文章主要介绍了Java中Object类的方法怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中Object类的方法怎么用文章都会有所收获,下面我们一起来看看吧。前言:Java的Object 类的
2023-06-30

java中无法加载主类怎么办

如果在Java中无法加载主类,可以尝试以下几种方法进行排查和解决:1. 检查是否正确设置了类路径(classpath)。确保将所有需要的类文件和依赖项都包含在类路径中。可以使用命令行的`java -cp`参数或者在IDE中设置项目的类路径。
2023-09-07

java indexof方法使用报错怎么解决

要解决Java中indexOf方法的使用报错,可以采取以下步骤:确认报错信息:检查报错信息,查看具体的错误类型和位置。检查调用方法的对象:确认使用indexOf方法的对象是否存在或已初始化。如果对象为null,则会引发NullPointer
2023-10-24

Java怎么调用其他类中的方法

在Java中,要调用其他类中的方法,首先需要创建一个该类的对象,然后通过对象来调用方法。以下是一个示例代码:```javapublic class MyClass {public void myMethod() {System.out.pr
2023-08-15

java中的Object类的toSpring()方法怎么用

这篇文章主要讲解了“java中的Object类的toSpring()方法怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中的Object类的toSpring()方法怎么用”吧!O
2023-06-30

vue中使用three.js报错怎么办

小编给大家分享一下vue中使用three.js报错怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言最近在学习three.js,同时也学习一下vue3,然后
2023-06-29

Java Object类equals方法怎么用

这篇文章主要介绍“Java Object类equals方法怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java Object类equals方法怎么用”文章能帮助大家解决问题。基本概念:Obj
2023-06-30

java错误找不到符号解决方法(引用自定义类)

通常情况下,我们在编写java文件时,会有引用到自已定义的一些类,如果按通常的javac *.java的形式来编译会出现找不到符号的错误。(推荐:java视频教程)以下提供了两种方法,以供参考假如在d:/web/wsh下有a.java和b.java两个文件,在
java错误找不到符号解决方法(引用自定义类)
2018-09-21

java怎么通过类名调用方法

在Java中,可以通过类名直接调用静态方法,或者通过创建类的实例对象来调用非静态方法。1. 调用静态方法:首先,你需要确保要调用的方法是静态的。静态方法可以通过类名直接调用,不需要创建类的实例对象。使用以下语法来调用一个静态方法:Class
2023-10-18

flex调用java类的方法 flex怎么用

要在Flex中调用Java类的方法,你需要使用Flex的远程调用功能。以下是使用Flex调用Java类方法的步骤:1. 创建Java类:首先,创建一个Java类,其中包含要调用的方法。确保将Java类编译为可执行的Java二进制文件(.cl
2023-08-24

java collection类排序方法怎么使用

在Java中,Collection类是一个接口,它的实现类有ArrayList、LinkedList、HashSet等。Collection类本身并没有提供排序方法,但是可以通过Collections类的静态方法来对集合进行排序。Coll
java collection类排序方法怎么使用
2024-02-29

使用OpenCV中的imread()内存报错怎么办

这篇文章给大家分享的是有关使用OpenCV中的imread()内存报错怎么办的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。错误截图如下:类似报错的原因1.imread()中的路径参数有误a.相对路径:此项目文件夹
2023-06-14

java中indexof方法怎么用

本文将为大家详细介绍“java中indexof方法怎么用”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“java中indexof方法怎么用”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一
2023-06-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录