对于java之xml之解析工具jaxp感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解javaxml解析工具类,并且为您提供关于DTOJavaSpringjava.lang.ClassNot
对于java 之 xml 之解析工具jaxp感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解java xml解析工具类,并且为您提供关于DTO Java Spring java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter、Groovy(conncet DB, generate xml, get response xml, compare two xml)、HDFD 四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍、JAVA - 解决:Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException的宝贵知识。
本文目录一览:- java 之 xml 之解析工具jaxp(java xml解析工具类)
- DTO Java Spring java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
- Groovy(conncet DB, generate xml, get response xml, compare two xml)
- HDFD 四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍
- JAVA - 解决:Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
java 之 xml 之解析工具jaxp(java xml解析工具类)
一、jaxp的api查看
*jaxp是javase一部分
*jaxp解析器在jdk的javax.xml.parsers包里面
*共四个类:分别针对dom和sax解析使用的类
*dom解析类:
DocumentBuilder:解析器类
*这个一个抽象类,不能new
*得到方式:DocumentBuilderFactory.newDocumentBuild();
*包含的方法:
可以解析xml:parser(String uri) uri:文件路径 返回Document对象
*返回的Document是一个接口,父节点是Node,若在Document找不到的方法,可以在Node找
*Document的方法:
*getElementsByTagName(String tagname):可以得到标签,返回集合NodeList
*createElement(String tagName): 创建标签
*createTextNode(String data):创建文本
*Node的方法
*appendChild(Node newChild):把文本添加到标签下面
*removeChild(Node oldChild):删除节点
*getParentNode():获取父节点
*NodeList的方法
*getLength():得到集合的长度
*item(int index)下标获取到具体的值
*案例:
for(int i=0;i<list.getLength;i++){list.item(i);
DocumentBuilderFactory:解析器工厂
*sax解析器:
SAXParser:解析器类
SAXParserFactory:解析器工厂
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class TestJaxp {
public static void main(String[] args) throws Exception
{
//查询所有name元素的值
/**
* 1、创建解析器工厂
* 2、根据解析器工厂创建工厂
* 3、解析xml返回document
**/
//创建解析工厂
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
//创建解析器
DocumentBuilder builder=buildFactory.newDocumentBuilder();
//解析xml返回document
Document document=builder.parse("src/person.xml");
//得到所有元素节点
NodeList nodeList=document.getElementsByTagName("name");
//遍历读取元素内容
for (int i = 0; i < nodeList.getLength(); i++) {
Node name1=nodeList.item(i);
String s=name1.getTextContent();//得到标签元素里面的内容
System.out.println(s);
}
}
}
//添加
//1、创建解析器工厂
//根据解析器工厂创建工厂
//解析xml返回对象
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=buildFactory.newDocumentBuilder();
Document document=builder.parse("src/test.xml");
NodeList nodeList=document.getElementsByTagName("p1");
Node p1=nodeList.item(0);
Element sex1=document.createElement("sex");
Text text1=document.createTextNode("女");
sex1.appendChild(text1);
p1.appendChild(sex1);
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(document),new StreamResult("src/test.xml"));
//修改
//1、创建解析器工厂
//根据解析器工厂创建工厂
//解析xml返回对象
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=buildFactory.newDocumentBuilder();
Document document=builder.parse("src/test.xml");
Node node=document.getElementsByTagName("sex").item(0);
node.setTextContent("男");
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(document),new StreamResult("src/test.xml"));
//删除
//1、创建解析器工厂
//根据解析器工厂创建工厂
//解析xml返回对象
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=buildFactory.newDocumentBuilder();
Document document=builder.parse("src/test.xml");
Node node=document.getElementsByTagName("name").item(0);
Node nodeParent=node.getParentNode();
nodeParent.removeChild(node);
TransformerFactory transformerFactory=TransformerFactory.newInstance();
Transformer transformer=transformerFactory.newTransformer();
transformer.transform(new DOMSource(document),new StreamResult("src/test.xml"));
//递归遍历
//1、创建解析器工厂
//根据解析器工厂创建工厂
//解析xml返回对象
DocumentBuilderFactory buildFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=buildFactory.newDocumentBuilder();
Document document=builder.parse("src/test.xml");
list1(document);
}
private static void list1(Node node) {
// TODO Auto-generated method stub
if(node.getNodeType()==Node.ELEMENT_NODE)
{
System.out.println(node.getNodeName());
}
NodeList nodelist=node.getChildNodes();
for (int i = 0; i < nodelist.getLength(); i++) {
Node node1=nodelist.item(i);
list1(node1);
}
}
DTO Java Spring java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
如何解决DTO Java Spring java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
我正在使用 JWT,我已经添加了登录端点并添加了 DTO
public class UserDto {
private String user;
private String password;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getpassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
@PostMapping("user")
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public User login(@RequestBody UserDto user) {
String token = getJWTToken(user.getUser());
User newuser = new User();
newuser.setUsername(user.getpassword());
newuser.setToken(token);
return newuser;
}
但是当我调用端点时:
2021-06-03 16:46:56.848 错误 94126 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() 用于 带有路径 [] 的上下文中的 servlet [dispatcherServlet] 抛出异常 [处理程序调度失败;嵌套异常是 java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter] 与 根本原因
java.lang.classNotFoundException: javax.xml.bind.DatatypeConverter at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636) ~[na:na] 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) ~[na:na] 在 java.base/java.lang.classLoader.loadClass(ClassLoader.java:519) ~[na:na] 在 io.jsonwebtoken.impl.Base64Codec.encode(Base64Codec.java:21) ~[jjwt-0.9.1.jar:0.9.1] 在 io.jsonwebtoken.impl.Base64UrlCodec.encode(Base64UrlCodec.java:22) ~[jjwt-0.9.1.jar:0.
解决方法
从 Java SE 9 的默认类路径中删除了 JAXB API。这就是您面临 ClassNotFoundError
的原因:
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
您可以按照 this great SO question 中的建议尝试不同的方法再次包含它们,但可能的方法是更新您的 jjwt
依赖项:问题已在 this 中描述和 this other Github 问题,并且应该从库的 0.10.0
版本开始修复。
请注意,从那个版本开始,原来的 jjwt
库被分成了几个,你需要修改你的依赖项。请考虑阅读图书馆changelog
Groovy(conncet DB, generate xml, get response xml, compare two xml)
import groovy.sql.sql
import groovy.xml.MarkupBuilder
import org.custommonkey.xmlunit.*
//Conect to DB and get the nessecery data to generate the expected Xml.
sql sql=context.dbConnection;
def writer = new StringWriter();
def xml = new groovy.xml.MarkupBuilder(writer)
xml.RetailerGroups(){
RetailerGroup(Name:"Checkout",Id:"CO")
{
Retailers(){
Retailer(Name:"Acme",Id:"Acm")
Retailer(Name:"Acme2",Id:"Acm2")
def res = sql.firstRow("select scdprj.user3 as ''Brand'',"
+ "schedwin.unix_date_conv (scdslg.air_start) as ''StartDate'',"
+ "schedwin.unix_date_conv (scdslg.air_end) as ''EndDate'',"
+ "scdprj.cl_id as AdvertiserId,clnt.name + '' '' + ''-''+ '' '' + user3 as CampaignName,clnt.name as AdvertiserName "
+ "From schedwin.PROJECTS scdprj "
+ "Inner join schedwin.SLGUSAGE scdslg "
+ "ON scdprj.prj_id=scdslg.prj_id "
+ "Join schedwin.CLNT clnt "
+ "ON clnt.cl_id=scdprj.cl_id "
+ "Where scdprj.cl_id=1228 and (scdprj.stat=1) and scdprj.formid=0 "
+ "AND (DATEDIFF(dd,schedwin.unix_date_conv(scdslg.AIR_END),''20090707'') < =0) "
+ "AND (DATEDIFF(dd,schedwin.unix_date_conv(scdslg.AIR_START),''20090707'') >= 0) ")
}
}
RetailerGroup(Name:"Checkout",Id:"CO")
}
def expectedResult = writer.toString()
log.info writer.toString()
XMLUnit.setIgnoreWhitespace(true)
//Get the actual result
def step = testRunner.testCase.testSteps["retailer"]
def result = step.testRequest.response.contentAsstring
log.info result
//Check the actual result by expected result,and output the test result.def xmlDiff = new Diff(result,expectedResult)def s = xmlDiff.toString();File f = new File("c:/","d.txt"); if( !f.exists()){ f.createNewFile(); }try { FileWriter fileWriter = new FileWriter(f,true); if (s == "org.custommonkey.xmlunit.Diff[identical]"){ fileWriter.write("API: ''"+ step.name + "'' DV Result is "+ "Passed/r/n"); } else{ fileWriter.write("API: ''"+ step.name + "'' DV Result is "+ "Failed/r/n"); } fileWriter.close(); } catch (IOException e) { e.printstacktrace(); }
HDFD 四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍
一 core-site.xml<configuration>
<!--指定namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!--用来指定使用hadoop时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/zkpk/hadoopdata</value>
</property>
二 hdfs-site.xml
<configuration>
<!--指定hdfs保存数据的副本数量-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
三 mapred-site.xml
<configuration>
<!--告诉hadoop以后MR运行在YARN上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
四 yarn-site.xml <configuration> <!--nomenodeManager获取数据的方式是shuffle--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!--指定Yarn的老大(ResourceManager)的地址--> <property> <name>yarn.resourcemanager.address</name> <value>master:18040</value> </property> <configuration>
JAVA - 解决:Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
异常
JAVA - 解决:Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
问题原因
- 高版本的JDK中不包含javax.xml.bind包了!
解决方法
- maven管理依赖,则在pom.xml中加入
<ependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
关于java 之 xml 之解析工具jaxp和java xml解析工具类的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于DTO Java Spring java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter、Groovy(conncet DB, generate xml, get response xml, compare two xml)、HDFD 四个配置文件(core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml )的简单介绍、JAVA - 解决:Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException等相关知识的信息别忘了在本站进行查找喔。
本文标签: