浅出Java 的Xml编程(转载)

(三)从零开始学习模糊控制——模糊决策 模糊控制之基础——模糊数学 (一)模糊数学——基本概念 (二)模糊数学——模糊关系 (三)模糊数学——模糊决策 文章目录模糊控制之基础——模糊数学前言一、模糊决策法1.最大值原理2.模糊排序2.模糊寻优总结 前言   模糊决策是指在模糊环境下进行决策的数学理论和方法。这类问题─般具有大系统特征,系统之间的关系十分复杂,存在不能准确赋值的变量,这些变量属于模糊因素,涉及到一定的主观因素,使得子系统之间、变量之间的关系不清晰,从而必须借助排序、模糊评判等方法来进行处理。 一、模糊决策 阅读详情

 

对于Xml,我的认识是,一个用来存放数据的标准格式.怎么看我都觉得XML和Html,完全不一样,也许仅仅只是都使用了标记来作为文档解释的原因吧.所以人们才喜欢把XML和HTML对比来看.对于我个人而言,XML就是一个简单方便的数据文件.因为.它不同与一般的关系型数据库,把数据看出二维表.通过基本的关系运算,获取二维表中的数据.XML仅仅把数据当成一个文档,然后正对文档解析获取数据.所以我的看法是,要操作XML文档,只要一个能够解释XML的文档解释器就可以了.然后把解释的内容.转变成程序所需要的数据就可以了.当操作完毕也可以把数据写回去.因此,这里主要介绍两中XML文档解释器,和java相关的Api.它们分别是DOM和SAX.及JDOM.

 

为了方便起见,我们需要一个简单的XML作为本文的示例参考:这个XML的主要目的是为了存放我的书籍信息.包括书名,书的作者,书的价格,书的编号.几个基本信息,

XML示例如下:

<?xml version="1.0" encoding="gb2312"?>

<Books>

<Book id="1">

<bookName>

编程珠玑

</bookName>

<bookAuthor>

Jon Bentley

</bookAuthor>

<bookISBN>

7-5083-1914-1

</bookISBN>

<bookPrice>

28.0

</bookPrice>

</Book>

 

<Book id="2">

<bookName>

Java编程思想(第2版)

</bookName>

<bookAuthor>

Bruce Eckel

</bookAuthor>

<bookISBN>

7-111-10441-2

</bookISBN>

<bookPrice>

99.0

</bookPrice>

</Book>

 

<Book id="3">

<bookName>

Inside VCL(深入核心VCL架构剖析)

</bookName>

<bookAuthor>

李维

</bookAuthor>

<bookISBN>

7-5053-9489-4

</bookISBN>

<bookPrice>

80.0

</bookPrice>

</Book>

</Books>

 

该XML记录了三本书和其相关的信息.

大体上操作XML文档可以分为三个步骤.

1.创建XML解释器

2.通过XML解释器和XML文件建立关联

3.通过XML解释器解释XML标记

 

XML解释器的类型.基本上可以分为:

? 验证和非验证解析器

? 支持一种或多种 XML Schema 语言的解析器

? 支持 Document Object Model (DOM) 的解析器

? 支持 Simple API for XML (SAX) 的解析器

 

这里主要介绍后两种.解释器.

 

Document Object Model(DOM)解释器:

Dom解释器是由W3C官方制定的标准解释器Api.只要符合该标准的编程接口都可以用来操作XML.目前该解释器主要有三个级别.Level1 Level2 Level3 这里只讨论到Level2.Dom模型实际上是把XML文件中的数据转变成了内存中的一颗树.该树大体有Doument Note NodeList Element这些对象构成.而Dom则是负责分析这颗树的结构,然后通过解释树从而起到了解释XML文档的作用.这里值得注意的是由于操作的树型结构.所以对于有些情况该解释器是无法分清楚的.例如属性值:

Id="1"

Id=

"1"

Id='1'

 

这对于Dom而言是完全相同的.因为.对于文档的格式Dom并不做任何解释.它仅是把文档中的数据转变成一颗树而已,原有的文档格式并不DOM中出现.

 

 

Simple API for XML (SAX) 的解析器

SAX解释器,可以说是一个把具体操作留给编程人员而把解释工作留给自己的一个编程模型.它并没有向DOM那样把整个XML文档加载到内存而是逐行解释然后通过事件通知给程序,由具体的程序使用这些通知,然后加以处理,这里就好像编写事件驱动的代码一样.因而就内存的占用率和解释效率而言SAX是有其适用性的.对于具体环境DOM和SAX都有其具体的应用面.

SAX的事件主要包括

文档的开始startDocument事件

对于元素而言的startElement和endElement

对于处理字符文本的characters 事件

以及文档的结束endDocment事件

 

JDOM API

DOM和SAX虽然提供了非常丰富的功能.可是对于开发人员而言这同时也带来巨大的负担.因为太过复杂,因此开源社区推出了的Jason Hunter 和 Brett McLaughlin 两位JAVA专家推出了JDOM作为一个比较简单的API.JDOM在背后会提供适配器选择具体的XML解释器.同样它也提供了树型结构来处理XML,而JDOM的树更简介.因此它兼顾了DOM和SAX的有点.当然也降低了灵活性.因此如果单纯的使用JDOM也是一个不错的选择.

 

三种API的对本

 

DOM 模型:

需要对整个文档结构有整体了解的情况

需要修改文档结构的情况

需要多次引用该文档的情况

SAX模型:

 

内存占有要求有限的情况

只需要读取XML部分元素的情况

只需要引用XML文档一次的情况

 

XML 文档对象模型(DOM)简介:

DOM由W3C推出的目的是为了提供一个良好的分析结构,用于操作XML中的标记.这个模型和类似于HTML的标记分析模型.它提供了一组操作接口,可以被各个具体平台所实现.因此可以选择任何满足DOM的解释器所提供的编程接口所实现的应用程序.将会很方便的移植到其他实现了DOM编程接口的平台工作.

对于标准DOM而言.它提供了的接口是一组可以描述XML文档树型结构的对象,以及通过这些对象可以对XML文档操作的方法.而应用程序只要调用这些对象以及对象操作.就等于在操作XML文件.这样就简化了XML文件的操作.使得编程接口足够的抽象.那么也就是说要熟悉DOM编程模型我们首要的就是熟悉DOM所提供的对象和方法.

 

下面我们就逐个熟悉DOM所提供的对象和方法:

Document:

该对象所描述的是整个XML文档.也就是整个树.对于树而言它可以表示为包含了很多节点的整体对象.而这些节点统称为Node.

 

Node:

node是一个相对抽象的概念,因此在java的定义中node被描述为接口.该接口扩展了几个子接口.

Element: 表示文档中的元素

Attribute:表示XML文件中的属性

Text:表示节点中的文字

其他的节点类型包括:Comment 表示 XML 文件中的注释、ProcessingInstruction 表示处理指令、CDATASection 表示 CDATA 节。对于这些有兴趣的读者可以参考相关文档.这里就不一一详解.

 

处理 DOM 经常要用到以下方法:

 

Document.getDocumentElement():返回 DOM 树的根。(该函数是 Document 接口的一个方法,没有定义其他的 Node 子类型。)

Node.getFirstChild() 和 Node.getLastChild():返回给定 Node 的第一个和最后一个孩子。

Node.getNextSibling() 和 Node.getPreviousSibling():返回给定 Node 的下一个和上一个兄弟。

Element.getAttribute(String attrName):对于给定的 Element,返回名为 attrName 的属性的值。如果需要 "id" 属性的值,可以使用 Element.getAttribute("id")。如果该属性不存在,该方法返回一个空字符串 ("")。

 

下面我们来做基本的DOM的示例,该示例很简单只是简单的显示上面的Book.xml文档中的内容.这也是DOM所做的基本事情.

 

代码如下:

 

import javax.xml.parsers.*;

import org.w3c.dom.*;

 

public class DomXml{

public static void main(String[] args)throws Exception{

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

DocumentBuilder bulider=factory.newDocumentBuilder();

Document doc=bulider.parse("BookXml.xml");

NodeList nl=doc.getElementsByTagName("Book");

for(int i=0;i<nl.getLength();i++){

Element node=(Element)nl.item(i);

System.out.println("BookName is :" +

node.getElementsByTagName("bookName").item(0).getFirstChild().getNodeValue().trim());

System.out.println("BookAuthor is :" +

node.getElementsByTagName("bookAuthor").item(0).getFirstChild().getNodeValue().trim());

System.out.println("BookISBN is :" +

node.getElementsByTagName("bookISBN").item(0).getFirstChild().getNodeValue().trim());

System.out.println("BookPrice is :" +

node.getElementsByTagName("bookPrice").item(0).getLastChild().getNodeValue().trim()+"/n/n");

}

}

}

 

 

代码很简单.只是把结果打印出来

 

 

 

在这段代码中我们可以看到的是

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();

DocumentBuilder bulider=factory.newDocumentBuilder();

Document doc=bulider.parse("BookXml.xml");

 

这样三段代码.DOM模型提供了一个工厂,由这个工厂负责加载XML解释器.这样使得程序员脱离了具体的编程环境.无需知道有关解释器的相关信息.而DocumentBuilder提供了创建XML文档的方法.通过这个对象,也使得程序无需和底层I/O系统打叫道.并且该对象会通过解释器生成正确的XML文档树.这样XML就被装载到了内存并生成了正确的树格式.

那么第二步就是要读取正确的文档内容了.读取正确的文档内容就如同对树的操作.首先遍历所需要的节点.然后读取数据就可以了.

因此理一下整个通过DOM读取XML文档的内容就可以得出一下步骤:

1.通过DocumentBulderFoctory创建XML解释器.

2.通过解释器创建一个可以加载并生成XML的DocumentBuilder

3.通过DocumentBuilder加载并生成一颗XML树.Document对象的实例

4.通过Document可以遍历这颗树.并读取相应节点中的内容.

 

关于解释器的加载,以及生成器的加载都是放在import javax.xml.parsers包中的.该包中处了DOM以外还包括SAX解释器和生成器.那么下面我们将讨论关于SAX的话题.

 

通过DOM模型创建XML文档

通过DOM编程接口除了可以读取XML文档中的数据,还可以创建XML文档。因为DOM提供的对象可以生成一颗描述XML文档的数结构,所以通用,可以把这颗生成在内存中的树结构写入到任意的输出流。这就需要通过XmlDocument的write方法。该方法用以写出XML文档到输出流。

事例代码:

import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.XmlDocument;
import java.io.*;

public class DomXml{
public static void main(String[] args)throws Exception{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.newDocument();
Element books=doc.createElement("Books");

Element book=doc.createElement("Book");
book.setAttribute("id","001");
book.appendChild(doc.createTextNode("J2EE Book"));

books.appendChild(book);
doc.appendChild(books);
((XmlDocument)doc).write(new FileOutputStream(new File("dom.xml")));
((XmlDocument)doc).write(System.out);
}
}

该程序的目的是创建一个XML文档而后,创建该文档的结构,然后输出所创建的结构,这里使用了两个流,一个是针对屏幕的输出流,还有一个是针对文件的输出流。

通过DOM修改XML文档

在JAXP中提出了,把DOM所生产的XML看成一个源,可以通输出流把所修改的源重新写回到XML文档中这样。从XML文件中解释出的DOM树就可以起到同步更新的作用。这个过程首先依赖雨XML文件的解释器。解释器首先分析XML文档然后生产树结构,应用程序可以操作这颗树,然后把操作结果作为源写回到XML文件中去。这里就要用到。DOMSource对象把Document所描述的树转变成源对象,然后可以通过一个Transformer把源写回到XML文件中去。下面给出一个程序事例文件。

文档如下,所操作的XML文件还是我们所熟悉的BookXml.xml。

事例代码如下:

import javax.xml.parsers.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.*;
import org.w3c.dom.*;

public class ModifyXml{
public static void main(String[] args)throws Exception{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.parse("BookXml.xml");

Element book;
Element bookName;
Element bookAuthor;
Element bookISBN;
Element bookPrice;

//insert
book=doc.createElement("Book");
book.setAttribute("id","4");

bookName=doc.createElement("bookName");
bookName.appendChild(doc.createTextNode("J2EE Programme begin Book"));
book.appendChild(bookName);

bookAuthor=doc.createElement("bookAuthor");
bookAuthor.appendChild(doc.createTextNode("Hesj"));
book.appendChild(bookAuthor);

bookISBN=doc.createElement("bookISBN");
bookISBN.appendChild(doc.createTextNode("7-145-10241-3"));
book.appendChild(bookISBN);

bookPrice=doc.createElement("bookPrice");
bookPrice.appendChild(doc.createTextNode("77.8"));
book.appendChild(bookPrice);

Node books=doc.getElementsByTagName("Books").item(0);
books.appendChild(book);

//delete
// books.removeChild(book);

//modify
NodeList allBook=doc.getElementsByTagName("Book");
Element opBook=null;
for(int i=0;i<allBook.getLength();i++){
opBook=(Element)allBook.item(i);
String id=opBook.getAttribute("id");
if(id.equals("4")){
break;
}
}
opBook.getElementsByTagName("bookAuthor").item(0).getFirstChild().setNodeValue("Bluce");

TransformerFactory tf=TransformerFactory.newInstance();
Transformer tr=tf.newTransformer();
DOMSource ds=new DOMSource(doc);
StreamResult sr=new StreamResult(System.out);
tr.transform(ds,sr);
}
}

这里,首先创建一个Book节点。然后添加到Document中,紧接着可以删除和修改该节点。

 

简单XML 编程接口( SAX)

为了解决DOM解释器需要占有大量内存的问题,因此提出了一种不加载整个XML文档.生成树.而是逐段读取XML文档然后抛出事件的解释方案.因此提出了SAX编程接口的策略.这样SAX既无需生成内存中的树结构,又无需去创建任何对象去描述XML所以节约了内存开销.只是单纯的去解释XML文件而已.

进而了解SAX所发生的事件成了对使用SAX编程是必须的.对于SAX而言事件的抛出是由解释器完成的,而处理则是交给应用程序完成的,所以实现事件接口和填写事件代码就是我们的事情.对于事件可以处理也可以不处理,不过由于SAX是不创建任何对象的.所以事件的状态也是不保持的.如果想要在多个事件中维护状态,也同样是应用程序的事情.

 

SAX事件说明:

对于SAX而言事件就是其编程的核心.常用的事件主要有5种.

startDocument()

该事件表示解释器开始解释文档.它没有传递任何参数,因此这里无需处理XML文档数据.

endDocument()

该事件表明解释器准备结束对XML文档的解释.因此以上两个事件都没有做太多实际工作

startElement(...)

告诉您解析器发现了一个起始标签。该事件告诉您元素的名称、该元素所有属性的名称和值,还会告诉您一些名称空间的信息。

characters(...)

告诉您解析器发现了一些文本。您得到一个字符数组、该数组的偏移量和一个长度变量,有这三个变量您就可以访问解析器所发现的文本。

endElement(...)

告诉您解析器发现了一个结束标签。该事件告诉您元素的名称,以及相关的名称空间信息。

startElement()、characters() 和 endElement() 是最重要的事件,后面将集中介绍这三个事件。所有这些事件都属于 ContentHandler 接口,定义的其他 SAX 接口处理错误、实体及其他很少使用的内容。

 

 

startElement() 事件

startElement() 事件告诉您 SAX 解析器发现了一个元素的起始标签。该事件有四个参数:

 

String uri

名称空间 URI。由于我的 XML 文档没有使用名称空间,因此这里不讨论其意义,所以可以不理会它.关于名称空间可以参考其他XML相关资料.

String localName

一个不包括名称空间的元素名称

String qualifiedName

元素的限定名,即名称空间前缀和元素本地名称的组合。

org.xml.sax.Attributes attributes

一个包含该元素所有属性的集合.该对象提供了几种方法获取属性的名称和值,以及该元素的属性个数。

如果您的 XML 应用程序查找某个元素的内容,startElement() 事件可以告诉您该元素何时开始。

 

 

 

characters() 事件

characters() 事件包含解析器在源文件中发现的字符。本着最小化内存占用的精神,这个事件包含一个字符数组,这与 Java String 对象相比要轻型得多。以下是 characters() 事件的参数:

 

char[] characters

解析器所发现的字符数组。

int start

属于该事件的 characters 数组中的一个字符的索引号。

int length

该事件中字符的的个数。

如果您的 XML 应用程序需要存储特定元素的内容,可以把存储那些内容的代码放在 characters() 事件处理程序中。

 

endElement() 事件

endElement() 事件告诉您解析器发现了某个元素的结束标签。它有三个参数:

String uri String localName String qualifiedName

这三个参数和startElement一样.

对该事件的典型响应是改变 XML 应用程序中的状态信息。如,在我的程序中将是把读取的XML文档打印到屏幕中去.

 

那么下面我们将编写一个关于SAX的应用程序.同样它和刚才DOM那个程序相同用来打印所解释的XML文档信息.

代码如下:

import java.io.File;

import javax.xml.parsers.*;

import org.xml.sax.helpers.*;

import org.xml.sax.*;

 

public class SaxXml extends DefaultHandler{

private String ElementName;

private int id;

private String bookName;

private String bookAuthor;

private String bookISBN;

private String bookPrice;

 

public SaxXml(){

this.ElementName="";

this.id=0;

this.bookName="";

this.bookAuthor="";

this.bookISBN="";

this.bookPrice="";

}

 

public void startDocument(){

System.out.println("Document Begin");

}

 

public void startElement(String uri,String localName,String qName,Attributes attributes){

this.ElementName=qName;

if(qName.equals("Book"))

System.out.println(attributes.getValue(0));

}

 

public void characters(char[] ch,int start,int length){

String str=new String(ch,start,length);

if(this.ElementName.equals("bookName") && !str.trim().equals("")){

this.bookName=str;

}

if(this.ElementName.equals("bookAuthor") && !str.trim().equals("")){

this.bookAuthor=str;

}

if(this.ElementName.equals("bookISBN") && !str.trim().equals("")){

this.bookISBN=str;

}

if(this.ElementName.equals("bookPrice") && !str.trim().equals("")){

this.bookPrice=str;

}

}

 

public void endElement(String uri,String localName,String qName){

if(qName.equals("bookName")){

System.out.println(this.bookName);

}

if(qName.equals("bookAuthor")){

System.out.println(this.bookAuthor);

}

if(qName.equals("bookISBN")){

System.out.println(this.bookISBN);

}

if(qName.equals("bookPrice")){

System.out.println(this.bookPrice);

}

if(qName.equals("Book")){

System.out.println();

}

this.ElementName="";

}

 

public void endDocument(){

System.out.println("Document End");

System.exit(0);

}

 

public static void main(String[] args)throws Exception{

SAXParserFactory factory=SAXParserFactory.newInstance();

SAXParser parser=factory.newSAXParser();

parser.parse(new File("BookXml.xml"),new SaxXml());

}

 

}

 

该代码通过事件实现了读取XML文档的作用.这里稍微要注意的是空白区域的处理,我这里是通过String的trim方法解决的.当然你也可以使用其他方法.这个程序中.在startElement中用来设置ElementName(元素的名字)这个状态,而在characters通过该状态作出相应的动作.这里主要是把读取的信息放到我们的对象的属性中去.在通过endElement事件来读取该属性.

 

SAX的开发步骤如下:

1. 实现ContentHandler 接口并填写事件代码(这里我所用的是继承DefaultHandler类,该类实现了ContentHandler 接口)

2. 创建SAX解释器工厂

3. 通过工厂创建SAX解释器

4. 使用SAX解释器加载XML文档,在把已经实现了ContentHandler 接口的类实例对象装入解释器

5. 解释器通过回调你的事件过程

【51单片机仿真】基于51单片机设计的温湿度采集检测系统__资料编号11 该系统通过与AT89C51单片机、LCD1602显示屏和DHT11温湿度传感器的集成,实时读取环境中的温度和湿度数据并在LCD1602上显示这些信息,其中系统初始化LCD1602显示屏、通过DHT11_receive()函数接收并校验DHT11传感器的温湿度数据、使用LCD_ShowNum()函数逐位显示湿度和温度数据并在这些数据后附加相应的单位符号,以便用户可以直观地看到当前环境的温湿度情况。 阅读详情

相关推荐

股票交易接口TDX量化下单接口

对于需要同时操作多只股票的投资者而言,这一功能可以一次性处理多个交易指令,大大提高了交易的效率。通过回测,投资者可以发现策略中的不足之处,进而进行优化和调整,提高策略的可靠性。根据通达信提供的安装指南,下载相应的安装程序并进行安装。这包括设置交易账户的相关信息,如账户名、密码等,以及连接到正确的交易服务器。不同的情况可能会有不同的标准,有的可能要求账户使用达到一定的时长,有的可能对账户内的资产金额有最低要求。可以通过接口提供的监控功能或者第三方工具,实时查看交易状态、交易数据等信息,确保交易按照预期进行。

2401_88470113的博客 1289

day24XML、工厂模式、装饰模式

XML XML eXtensible Markup Language 可扩展的标记语言 它是一种数据的表示格式,可用来表示结构复杂的数据 常用于数据的存储和传输 XML的几个特点和使用场景 一是纯文本,默认使用UTF-8编码;二是可嵌套; 如果把XML内容存为文件,那么它就是一个XML文件。 XML的使用场景:XML内容经常被当成消息进行网络传输,或者作为配置文件用于存储系统的信息。 XML的语法规则 XML的创建 创建一个xml文件 语法规则: 第一行必须是文档声明 标签(元素)规则 标签由一对尖括号和

xiao_baibai1025的博客 520

不止是打字机效果:手把手教你用SpannableStringBuilder打造Android富文本AI对话界面

本文详细介绍了如何使用SpannableStringBuilder在Android平台上构建专业级AI对话界面,涵盖流式文本处理、富文本解析、交互优化等核心技术。通过实战代码示例,帮助开发者实现类似DeepSeek的AI产品交互效果,提升用户体验和应用专业度。

weixin_28358083的博客 198

一文详细讲解JAVA开发中的XML

XML的全称是EXtensible Markup Language , 可扩展标记语言编写XML就是编写标签,与HTML非常类似,扩展.xml良好的人机可读性。

RockyBlogs 4610

自动驾驶开发者必看:如何用Impromptu VLA数据集提升模型在乡村道路的表现(附实战代码)

本文为自动驾驶开发者提供了利用Impromptu VLA开源数据集提升模型在乡村道路等极端场景表现的实战指南。该数据集专门针对边界模糊道路、非常规障碍物等非结构化环境,通过精选的8万多个极端场景片段,帮助模型弥补数据分布偏差。文章详细介绍了环境搭建、数据准备、模型微调及性能评估的全流程,并附有实战代码,旨在系统性提升自动驾驶系统在长尾场景下的鲁棒性。

t8u9v0w1x的博客 243

AI Agent评估:指标、策略与最佳实践

AI智能体正逐渐融入到各个领域,从日常的对话助手到复杂的工作流程自动化,其应用范围不断拓展。然而,确保这些智能体能够可靠、高效地完成任务至关重要,这就使得AI智能体评估成为了人工智能发展过程中不可或缺的一环。本文将深入探讨AI智能体评估的指标、策略以及最佳实践,为读者全面解读这一关键领域。

llm_way的博客 3498

Java中XML的解析

​ 当将数据存储在XML后,我们就希望通过程序获取XML的内容。如果我们使用Java基础所学的IO知识是可以完成的,不过你学要非常繁琐的操作才可以完成,且开发中会遇到不同问题(只读、读写)。人们为不同问题提供不同的解析方式,使用不同的解析器进行解析,方便开发人员操作XML。XML DOM 和 HTML DOM一样,XML DOM 将整个XML文档加载到内存,生成一个DOM树,并获得一个Document对象,通过Document对象就可以对DOM进行操作。以下面books.xml文档为例。

SHI940637335的博客 7099

全网首发:香橙派5MAX安装ubuntu20.04(换了官方桌面)及ros,运行LIVOX-mid360混合固态激光雷达,实际测试fastlio(只能说可以跑,还是有点吃力)

独家发布!!!香橙派5MAX安装ubuntu20.04(换了官方桌面)及ros,运行mid360混合固态激光雷达,测试fastlio(只能说可以跑,还是有点吃力),国货也算崛起了。

2402_82745259的博客 5998

Java XML XML解析,设计模式等

Java XML XML解析,设计模式

wangjh11234的博客 1377

SwinTransformer改进(5):与CBAM结合的视觉模型

这个模型的核心思想是将Swin Transformer的强大特征提取能力与CBAM的注意力机制相结合,以提升模型对重要特征的关注度。​​CBAM模块​​:包含通道注意力和空间注意力两个子模块​​Swin Transformer主干网络​​:作为基础特征提取器​​集成结构​​:在Swin Transformer的不同阶段插入CBAM模块使用移动窗口(Moving Window)机制减少计算量层次化设计,特征图逐渐缩小,通道数逐渐增加在不同阶段使用Patch Merging进行下采样。

2401_82355416的博客 688

把浮点数这件小事讲清楚:ABAP 7.51 里 Open SQL 与 ABAP CDS 的 FLTP 新玩法与避坑指南

ABAP浮点数计算的风险与应对 摘要:ABAP项目中的浮点数(FLTP)在跨平台计算时存在误差风险,同一逻辑在不同数据库平台可能产生细微差异。ABAP 7.51新增了两项关键能力:1)Open SQL和ABAP CDS中可为AVG函数指定结果类型,避免默认返回FLTP;2)ABAP CDS提供FLTP_TO_DEC转换函数。但需注意这些转换仍可能存在平台相关差异,且FLTP_TO_DEC会截断而非四舍五入小数位。开发者在涉及金额、数量等关键业务计算时,应明确数值语义并设计容错机制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 214

第十二章_基础加强(2)_xml及约束

目录一、xml1 - xml概述2 - xml解析 一、xml 1 - xml概述 xml概述:XML的全称为(EXtensible Markup Language),是一种可扩展的标记语言 标记语言:通过标签来描述数据的一门语言(标签有时我们也将其称之为元素) 可扩展:标签的名字是可以自定义的,XML文件是由很多标签组成的,而标签名是可以自定义的 作用:用于进行存储数据和传输数据;作为软件的配置文件 作为配置文件的优势:可读性好;可维护性高 标签规则 标签由一对尖括号和合法标识符组成:<s

qq23001186的博客 266

2026.3.28:langgraph使用mysql进行持久化会话存储(短期记忆和长期记忆)

本文介绍了如何使用MySQL持久化存储LangGraph会话数据(短期和长期记忆)。首先安装必要的依赖包,然后通过Python代码实现将短期记忆写入MySQL数据库。主要步骤包括:1) 建立MySQL连接;2) 创建代理(agent)并配置检查点(checkpointer)和存储(store);3) 实现工具函数如计算器和天气查询;4) 使用中间件跟踪工具和模型调用次数。最后展示了如何从MySQL读取短期记忆数据,完成会话的持久化存储和检索功能。代码示例包含完整的实现细节,包括状态管理、消息处理和数据库操作

拥抱具身智能,昇腾Ascend C 735

[转载]利用JAVA技术进行XML编程

利用JAVA技术进行XML编程关于本教程 在过去几年中,XML 已经成为一种通用的数据格式。这篇经过修订的教程将向您介绍 Java 语言中处理 XML 文档最常用的编程接口。 最普通的 XML 处理工作是 解析 XML...

congji3817的博客 249

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

浅出Java 的Xml编程

浅出Java 的Xml编程 作者:何双江         转载  www.qysoft.net    对于Xml,我的认识是,一个用来存放数据的标准格式.怎么看我都觉得XML和Html,完全不一样,也许仅仅只是都使用了标记来作为文档解释的原因吧.所以人们才喜欢把XML和HTML对比来看.对于我个人而言,XML就是一个简单方便的数据文件.因为.它不同与一般的关系型数据库,把数据看出二维表....

shazi 143

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[转载]Java与XML联合编程

Java与XML联合编程从XML诞生之日起,它就一直是业界的焦点话题之一。经过了几年的发展,XML技术日趋成熟,现在越来越多的应用都是基于XML开发的。在 Internet日益普及的今天,分布式编程日显重要,越来越多的应用都开...

congji3817的博客 163

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

简析JAVA的XML编程

  XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 。由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试

!Java 1940

AI利润轮动下云厂商领涨:开发者必须关注的技术新趋势

大模型技术正从模型能力竞赛转向商业化落地,市场估值锚随之切换到利润兑现。头部云厂商凭借资本开支与AI服务收入形成双轮效应,成为这一轮AI利润轮动的核心推动力。在此背景下,推理成本优化、模型私有化部署与Credits租户级分摊,正成为AI工程团队必须掌握的成本治理手段。AI Agent的兴起进一步将应用场景从对话交互扩展至业务流程自动化,带来更直接的降本增效价值。梳理云厂商、基础设施与应用层的技术信号,为开发者提供与产业周期匹配的能力升级路径。

congji3817的博客 429

[转载]简析JAVA的XML编程(to 初学者们)

简析JAVA的XML编程(to 初学者们) 个人认为这篇文章通俗易懂,值得推荐. XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如 Microsoft Studio系列、Oracle系列、...

congji3817的博客 180

简析JAVA的XML编程(转载)

简析JAVA的XML编程  作者:宁波吉联计算机技术有限公司研发部 徐荣胜 发文时间:2004.07.02  XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 。由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XM

创业、新知、分享 946

简析JAVA的XML编程(java-xml初学者)

简析JAVA的XML编程(java-xml初学者)作者名字忘了,當時時在網上找的一貼子,以后看到了再補上,對不住了。个人认为这篇文章通俗易懂,值得推荐。XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列、Oracle系列、Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 。由于笔者所从事的电子政务开发较早的引入

冯立彬的博客 6970

Java从零开始 第15讲 网络编程,XML和JSON

这里写目录标题网络编程TCP的网络编程多线程网络编程转载请注明出处 网络编程 在本讲之前,我们所有编写的程序都是单机运行的,并没有任何需要网络的部分,而现在让我们学习运用网络的编程 在学习代码之前,让我们先学习两个概念,协议(protocol)和套接字(socket) 协议是端到端通信需要遵循的规矩,你不需要具体理解协议的内容,你只需要明白协议是用于约束信息在网络上传输的东西,就像是交警一样 而套接字,是端到端通信的端点,是网络驱动提供给应用程序编程的一种接口,一种标准,一种机制,当我们想要通过网络传输或者

CheakccL的博客 438

Java解析XML文档——dom解析xml (转载)

Java解析XML文档——dom解析xml (转载) 一、前言    用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object Module)称为DOM。Sun公司提供了Java API for XML Parsing(JAXP)接口来使用SAX和DOM,通过J

julia_hxy的专栏 481
上一篇: Java类加载器
下一篇: 今天学习到很多东西(从ITAT试题中吸取到的)……
Ostroff
博客等级 码龄18年 59粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值