如果您正在 XML 应用程序中使用 XPath,但是却需要对 Web 应用程序使用 jQuery,那会怎么样呢?如果您知道 jQuery,却需要在应用程序中使用 XPath,又会如何呢?使用这个方便的集锦手册(phrase book),从知道的转向需要知道的。在本文中,学习使用 XPath 1.0 和 jQuery 1.4 处理类似的任务,让您能够在必要的时候从其中一个快速转向另一个。
0 评论:
在 IBM Bluemix 云平台上开发并部署您的下一个应用。
简介
XML 是一种受到良好支持的 Internet 标准,使用它编码的结构化数据很容易被几乎任何编程语言解码,甚至能够被人类阅读或编写,只要他们使用标准文本编辑器即可。很多应用程序,尤其是现代的标准兼容的 Web 浏览器,都可以直接处理 XML 数据。
常用缩写词
- Ajax:异步 JavaScript + XML
- API:应用程序编程接口
- DOM:文档对象模型
- W3C:万维网联盟
- XHTML:可扩展超文本标记语言
- XML:可扩展标记语言
- XSLT:可扩展样式表语言转换
XPath(XML Path 语言)是一种强大的查询语言,用于选择 XML 文档中的节点。XPath 标准的 1.0 版本广泛实现于各种语言,比如 Java™、C# 和 JavaScript。
jQuery 是一种事实上标准的跨浏览器 JavaScript 库,用于选择和操纵 XHTML 文档(以及通过 Ajax 加载的 XML 文档)中的节点。它已经被很多大公司(包括 Google、IBM®、Microsoft® 和 Twitter)采用。在我写作本文时,发布了它的当前版本 1.4;所以我马上进行了升级,以利用它所承诺的更快速度。注意,本文中的 jQuery 例子应该未加修改地使用前一版本,即 jQuery 1.3.2。
为何在 XPath 存在于 JavaScript 中时使用 jQuery?
如果 XPath 是 W3C 标准,并且实现于 JavaScript 中,那么为什么还要麻烦地使用 jQuery 呢?
XPath 是一个普通的 XML 标准,而 jQuery 是一个轻量级的库,设计用于处理跨浏览器兼容性方面的问题,使您不必担心用户运行的是哪种浏览器。它足够灵活,可以在使用标准 JavaScript 词汇的浏览器 DOM 中工作,它还提供一些大大简化 Web 应用程序开发的附加特性,比如强大的 Ajax 和动画支持。
但是,应该总是对手边的工作使用适当的工具;更多地了解这两个工具无疑有助于您为下一个项目挑选适当的技术。
例子
整篇文章中,都会回过头来参考一个方便的样例 XML 文档,参见 清单 1。此书籍列表包括各种信息,比如作者、两种完全虚构的价格和书名。
清单 1. 样例 XML 文档 (book.xml)
<?xml version="1.0" encoding="utf-8"?> <catalog> <book format="trade"> <name>Jennifer Government</name> <author>Max Barry</author> <price curr="CAD">15.00</price> <price curr="USD">12.00</price> </book> <book format="textbook"> <name>Unity Game Development Essentials</name> <author>Will Goldstone</author> <price curr="CAD">52.00</price> <price curr="USD">45.00</price> </book> <book format="textbook"> <name>UNIX Visual QuickPro</name> <author>Chris Herborth</author> <price curr="CAD">15.00</price> <price curr="USD">10.00</price> </book> </catalog>
注意,我跟这里列出的作者和发行人没有任何联系,只有最后那个明显的除外。价格完全是瞎编的,至于实际的定价,您应该询问自己喜欢的书店。
XPath 假定
对于本文中的 XPath 代码,您要做以下假定:
- 已经将 book.xml 文件(参见 清单 1)加载到您的 XPath 实现可以使用的格式。
- 从一个表示文档根的对象开始搜索。就是以 <catalog> 元素作为子元素的那个对象。您将称之为
root
,因为它是 XML 文档层次结构的根。
由于在太多不同的平台上有太多的 XPath 实现,所以下面我们将重点放在 XPath 语句本身上,并使用一个类似于 JavaScript 的伪代码来在上下文中展示这些语句;请查看您喜欢的开发平台的类库,了解有关加载 XML 文档和您可用的特定 XML 节点对象的信息。
jQuery 假定
本文中的 jQuery 代码做以下假定:
- 使用的是最新(版本 1.4.0)jQuery 代码(参见 参考资料 中的链接)。
- 已经通过
jQuery.get()
或jQuery.post()
方法加载了 book.xml 文件,并且已经将最终的 XML 文档存储在一个名为root
的变量中(与 XPath 例子相同)。
用于做这件事的一些样例代码在 清单 2 中。
清单 2. 利用 jQuery 加载 XML 样例
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>Book Catalog</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js"></script> <script type="text/javascript">// <![CDATA[ var root = null; $(document).ready( function(){ $.get( "http://localhost/~chrish/books.xml", function( data ) { root = data; $("p#status").text( "Loaded." ); } ); } ); // ]]></script> </head> <body> <p id="status"> Loading book.xml... </p> </body> </html>
在 $(document).ready()
函数中,使用 jQuery get()
方法从本地 Web 服务器加载 books.xml,将最终的文档对象存储在 root
变量中,并用status
ID 设置段落的文本,以表明 XML 已完成加载。有关 jQuery 的更多信息,请查看本文末尾 参考资料 中的相关链接列表。
选择节点
XPath 和 jQuery 的基本目的都是从文档选择节点。一旦选择了一个节点(或一个节点集合),就可以找到您正在寻找的数据以及在需要时操纵文档。
XPath 设计用于确切返回您所寻找的节点;它一般非常特定。另一方面,jQuery 则使得操作大型节点集合非常容易,所以有时候您必须在开始处理节点之前小心地缩小匹配范围。
按名称选择节点
在搜索特定节点时,您通常知道它的名称,或者知道其父元素的名称。
要找到一个特定的元素,您会使用它的名称,如 清单 3 所示。
清单 3. 按名称选择节点
/* Find all <book> elements through XPath: */ var result = root.find( "//book" ); /* Find all <book> elements through jQuery: */ var result = $(root).find( "book" );
用于选择所有 <book> 元素的 XPath 语句(//book
)使用两个斜杠 (//),来指定从当前节点(本例中是 root
)开始、所有匹配的节点都会被找到。这是 jQuery 的默认行为,所以您不需要包含任何其他内容。在两种情况下,结果都是 清单 1 中的所有三个 <book> 元素。
通常可以通过指定元素路径来缩小搜索结果;结果将是自路径末尾的匹配节点(参见 清单 4)。
清单 4. 按路径选择节点—两者行为不同
/* Be more specific (XPath): */ var result = root.find( "/catalog//book" ); /* Be more specific (jQuery): */ var result = $(root).find( "catalog book" );
从根元素 (/) 开始,这个 XPath 语句将寻找第一个 <catalog> 元素,然后返回这第一个 <catalog> 元素下的所有 <book> 元素。jQuery 语句的行为稍有不同;它将返回所有 <catalog> 元素下的所有 <book> 元素(参见 清单 5)。对于例子 book.xml 文件,结果是相同的节点集,但是如果您想要得到 <book> 元素下的所有 <author> 元素,那会怎么样呢?跟 清单 3 中一样,应该以两个斜杠 (//) 开始 XPath 表达式。
清单 5. 按路径找出内含的节点—两个例子的行为一样
/* Get all authors from all books (XPath): */ var result = root.find( "//book//author" ); /* Get all authors from all books (jQuery): */ var result = $(root).find( "book author" );
要让 jQuery 跟 清单 4 中的 XPath 样例一样返回第一个 <catalog> 中的 <book> 元素,您必须指导它使用它找到的第一个 <catalog>(参见 清单 6)。
清单 6. 匹配第一个 catalog 中的 book—这些例子的行为一样
/* All books from the first catalog (XPath): */ var result = root.find( "/catalog//book" ); /* All books from the first catalog (jQuery): */ var result = $(root).find( "catalog:first book" );
找到元素的最后一次出现(比如项目列表中的最后一个列表项,或者选择列表中的最后一个选项)也是一个常见操作。要正确地将一些东西附加到列表末尾,需要知道此末尾的位置(参见 清单 7)。
清单 7. 找到 catalog 中的最后一个 book
/* The last book from the first catalog (XPath): */ var result = root.find( "/catalog/book[last()]" ); /* The last book from the first catalog (jQuery): */ var result = $(root).find( "catalog:first book:last" );
在两种情况下,您都得到第一个 <catalog> 元素中的最后一个 <book> 元素,这正是您在寻找的。在 XPath 例子中,last()
函数返回最后匹配元素的索引(用在方括号中)。
选择任意节点
有时,您不知道您在寻找的元素的名称,或者需要找到一个可能在几个不同元素中的元素。在 XPath 和 jQuery 中,都可以使用星号 (*) 来匹配任意元素(参见 清单 8)。
清单 8. any
元素
/* Find all authors in all elements inside of <catalog> (XPath): */ var result = root.find( "/catalog//*//author" ); /* Find all authors in all elements inside of <catalog> (jQuery): */ var result = $(root).find( "catalog:first * author" );
注意,我在 jQuery 样例中使用了 :first
,以使它的行为完全跟 XPath 版本一样。
按属性选择节点
类似的元素通常具有独特的属性,比如 XHTML 元素中使用的 id
属性,是为了给 XHTML 元素一个惟一的引用 ID(参见 清单 9)。有时,您并不太关心特定的元素,而是关心一个属性为特定值的元素。
清单 9. 找到那些讨厌的教科书
/* Find all books that are textbooks (XPath): */ var result = root.find( "//book[@format='textbook']" ); /* Find all books that are textbooks (jQuery): */ var result = $(root).find( "book[format='textbook']" );
两个例子都将返回所有具有 format
属性且属性值设置为 textbook
的 <book> 元素(清单 1 中的 book.xml 文件中有两个这样的元素)。XPath 的语法使用一个 @ 符号来匹配属性(jQuery 只是将属性括在方括号中),您需要包含两个斜杠 (//) 来匹配所有 <book> 元素,但是两个查询非常类似,都很直观。
针对 XHTML 中两个最常见的匹配属性(id
和 class
),jQuery 包含了两个快捷方式。在 XPath 中,您必须显式地写出它们(参见 清单 10)。
清单 10. 基于 id
和 class
属性匹配 XHTML
/* Find the "status" <p>, then the highlighted elements (XPath) */ var result1 = xhtml_root.find( "//p[@id='status']" ); var result2 = xhtml_root.find( "//*[@class='highlight']" ); /* Find the "status" <p>, then the highlighted elements (jQuery) */ var result1 = $( "p#status" ); var result2 = $( ".highlight" );
假设您的 XHTML 文档是有效的(确实是的,对吧?),ID 匹配查询将只返回一个元素,因为在有效的 XML 文档中,ID 必须是惟一的。
如果您是层叠样式表(Cascading Style Sheets,CSS)的粉丝,可能注意到了,jQuery 选择器几乎跟 CSS 选择器完全相同。这很方便,因为您只需要记住一个针对通过 jQuery 找到想要的元素和利用 CSS 为元素定义样式的标准。
多个选择器
XPath 和 jQuery 都允许您组合多个选择器来检索每个匹配任意查询的节点(就是说,将得到结果的并集)。在 XPath 中,用竖线 (|) 字符组合语句,而在 jQuery 中则使用逗号 (,)(参见 清单 11)。
清单 11. 找到多个选择器的结果
/* Find all book names and all authors (XPath) */ var result = root.find("//name|//author" ); /* Find all book names and all authors (jQuery) */ var result = $(root).find( "name,author" );
在两种情况下,结果都是文档任何地方所有 <name> 和 <author> 元素的列表。在 图 1 中,使用 AquaPath 查看 XPath 结果(AquaPath 是一个用于 Mac OS X Tiger 的工具,有关它的更多信息,请参见 参考资料)。
图 1. XPath 结果,book.xml 文件中所有 book 的 name 和 author 标记都已突出显示
遍历节点
除了选择节点之外,通常还需要遍历文档结构,以便找到相关的数据或者执行复杂的操作。XPath 和 jQuery 都可以帮助您遍历文档。
根据前面学习的内容,您可以使用这些遍历方法来帮助找到祖先(即包含当前元素的元素)或子孙(即当前元素包含的元素)。
例如,清单 12 用于找到包含您找到的最后一个 <book> 的 <catalog>。
清单 12. 哪个 catalog 列出最后一个 book?
/* Find the catalog for the last book you know about (XPath) */ var result = root.find( "//book[last()]/ancestor::catalog" ); /* Find the catalog for the last book you know about (jQuery) */ var result = $(root).find( "book:last" ).closest( "catalog" );
图 2 显示了结果。
图 2. 最后一个 book 的 catalog 祖先
有一件事要注意,jQuery closest()
方法的行为很像 XPath 的 ancestor-or-self;如果匹配的话,它将包含当前节点。在本例中它不包含当前节点,但是如果您可以嵌套名称相同的元素或者是在匹配属性,那么应该牢记这件事。
如果需要朝另一个方向走,找到嵌入在您已经找到的元素中的元素,也是可以做到的(参见 清单 13)。
清单 13. 找到列出在 catalog 中的 price
/* Find the prices of everything in the catalog. (XPath) */ var result = root.find( "//catalog/descendant::price" ); /* Find the prices of everything in the catalog. (jQuery) */ var result = $(root).find( "catalog price" );
对于那些特殊情况,即选择的节点可能匹配您正在寻找的元素,那么跟 XPath 中的祖先一样,子孙也具有 descendant-or-self(参见 图 3)。
图 3. 所有 price,已选中
模拟高级 XPath 特性
XPath 指定了很多在 jQuery 中不必要的有用特性;毕竟,jQuery 运行在浏览器中,可以充分利用 JavaScript 的优势,而 XPath 通常用于比较受限的环境中,比如 XSLT 处理。
当然,只要您想用,这并不能阻止您用 JavaScript 实现这些特性。
很容易数清查询结果的个数(参见 清单 14)。
清单 14. 多少节点匹配选择器?
/* How many price entries do you have? (XPath) */ var result = root.find( "count(//price)" ); /* How many price entries do you have? (jQuery) */ var result = $(root).find( "price" ).length;
有时只需要知道节点是否包含某个字符串(参见 清单 15)。
清单 15. 第三个 <author> 中包含 Chris
吗?
/* Does the third <author> have "Chris" in its contents? (XPath) */ var result = root.find( "contains(//book[3]/author,'Chris')" ); /* Does the third <author> have "Chris" in its contents? (jQuery) */ var result = $(root).find( "book:eq(2) author:contains('Chris')" ).length > 0
清单 15 中有一个非常重要的区别需要注意,XPath 的索引从 1 开始,不是从 0 开始。在 jQuery 中,必须使用 :eq(2)
来得到第三个结果。
XPath 也有一个 sum()
函数,它以匹配节点的内容作为参数,将这些参数转换成数值,并返回这些值的和。在使用 jQuery 时,必须编写一个简短的函数来模拟该函数(参见 清单 16)。
清单 16. 计算一些节点内容的和
/* Sum the Canadian prices (XPath) */ var result = root.find( "sum(//price[@curr='CAD'])" ); /* Sum the Canadian prices (jQuery) */ function sum( root, selector ) { var x = 0; $(root).find( selector ).map( function() { if( this.text ) { // Internet Explorer-only return x += ( this.text * 1 ); } // Firefox and W3C-compliant browsers return x += ( this.textContent * 1 ); } ); return x; } var result = sum( root, "price[curr='CAD']" );
jQuery 中的 map()
方法为每个结果节点运行指定的函数。注意,要得到结果节点的内容,也必须稍微费点事。确保在所有您喜欢的浏览器上测试这类 JavaScript。
您现在应该比较能理解何时以及如何将 XPath 1.0 和 jQuery 1.4 用于类似的任务了。
结束语
对于从格式良好的 XML 文档(包括 XHTML 页面)选择节点,XPath 和 jQuery 具有强大的查询语义。尽管它们的语法不同,但是无论使用哪一个来基于元素名或属性值从文档选择重要的或感兴趣的节点,都相当容易。
对于匹配与当前匹配的元素相关的元素节点,XPath 和 jQuery 都支持直观的遍历语义。此外,由于 jQuery 运行在完全的 JavaScript 解释器中,所以您可以用少量的代码模拟 XPath 的一些高级特性。
https://www.ibm.com/developerworks/cn/xml/x-xpathjquery/
相关推荐
【IT各种功能和文档集锦】是一个综合性的资源包,涵盖了三个主要的IT技术领域:jQuery、XML和AJAX。这些技术在现代Web开发中扮演着至关重要的角色,下面将分别详细阐述它们的重要知识点。 首先,jQuery是一个轻量级...
8. **网页解析**:使用XPath和CSS选择器提取数据,以及处理JavaScript生成的内容。 9. **异常处理和日志记录**:确保爬虫在遇到问题时能够优雅地处理,并记录运行过程。 通过研究这些源代码,你可以了解网络爬虫的...
基于C#与HALCON平台的成熟视觉项目模板:源代码齐全,数据追溯功能强大,助力高效项目开发,成熟视觉项目源代码 附带数据追溯 功能齐全,做项目非常好的模板 C#+HALCON平台 ,成熟视觉项目源代码; 附带数据追溯; 功能齐全; C#+HALcon平台模板,"C#+HALCON平台全功能视觉项目模板:数据追溯与成熟代码源"
两阶段微电网鲁棒优化:以投资与运行成本为目标,C&CG算法分层建模与KKT条件转化,MATLAB+Yalmip+Cplex求解,两阶段微电网鲁棒优化代码 分别以投资成本和运行成本为目标 采用C&CG算法将模型分为主问题和子问题 用KKT条件将双层模型进行转化 使用MATLAB环境下的yalmip+cplex进行求解 ,两阶段微电网; 鲁棒优化; 投资成本; 运行成本; C&CG算法; 主问题子问题; KKT条件; yalmip+cplex求解; MATLAB环境。,基于C&CG算法的两阶段微电网鲁棒优化:成本目标驱动下的KKT条件转化与MATLAB求解
西门子V90 Profinet控制新能源自动排列机:RFID读写与运动控制详解,西门子FB284伺服v90profinet程序西门子触摸屏程 序,新能源行业自动排列机,真实项目,V90 走PN 口控制4轴,自己写的RFID读写FB SCL和西门子运动控制FB块开放,直接复制可用,没有密码,详细注释,轴状态全解析,报警代码全解析,RFID 读写,MES 通讯,SCL 语言,CAD电气图 ,核心关键词:西门子FB284伺服; v90profinet程序; 西门子触摸屏程序; 新能源行业自动排列机; V90走PN口控制4轴; RFID读写; SCL语言; 西门子运动控制FB块; 详细注释; 轴状态全解析; 报警代码全解析; MES通讯; CAD电气图。,西门子V90 Profinet控制4轴系统程序:真实项目详解及完整注释
vmwareplayer14110_itmop.com.zip
内容概要:本文详细介绍了洛特卡-沃尔泰拉模型的背景、假设及其数学表达方式,该模型用于描述生态学中捕食者与猎物间的种群动态变化。首先回顾了该模型的发展历程,阐述了其基本假设,包括无外部干扰下猎物按指数规律生长、捕食者依附于猎物生存等情况。接着给出了描述两物种相互关系的一阶非线性微分方程组,并对其各参量进行了具体解释,明确指出α、β、δ、γ分别对应于猎物增长率、捕获效率、能量转化率及捕食者自然衰减率四个关键要素。此外还提供了利用Python进行数值仿真的方法与代码样例,借助matplotlib等库生成直观的时间演变图形及二者互动的相空间轨迹图,展示了系统固有的周期振荡特性。最后讨论了该理论存在的不足之处以及未来发展的方向,强调可以通过加入更多现实因素改进现有模型。 适合人群:生物学专业学生,特别是关注生态学领域的本科生及以上学历的学习者;对于希望深入了解生物数学模型或者有意从事相关科研工作的研究人员来说也具有较高的参考价值。 使用场景及目标:本篇适用于高校课堂教学中有关种群动力学的内容讲解,帮助学生建立对捕食者-猎物种群动态变化规律的理解;也可以作为学术研讨材料辅助专业人士探索生态系统内不同物种间长期共生关系的本质。同时对于想要动手尝试经典生态模型编程实验的人来说非常适合作入门指南。 其他说明:文中提供的Python代码可供读者下载并在个人电脑上运行验证效果。需要注意的是,由于文中只涉及到简单的理想条件下模型,当应用到更为复杂的真实世界问题时需要适当调整参数设定并考虑到其它外界因素带来的影响。
工频正弦波逆变器开发板:24V-72V通用MOS管方案,6500W功率,触摸屏操作,市电互补UPS功能,全套设计资料与程序源码注释清晰,稳定可靠的选择,逆变器方案(工频全套)工频正弦波逆变器开发板,24V-72V通用12只TO-247封装MOS管,额定输出功率6500W以下;配有触摸屏操作界面,运行数据一目了然,带市电互补UPS功能,可选择电池优先或市电有限工作,我们的开发板均从实战角度出发,让您的学习更便捷,包含全套设计资料,PCB.原理图.源代码,程序均有中文注释,MCU选用美国微芯公的PIC-8位单片机,民用数字电源首选单片机,抗干扰能力强,运行稳定 ,逆变器方案;工频正弦波逆变器开发板;TO-247封装MOS管;市电互补UPS功能;设计资料全套;PIC-8位单片机;抗干扰能力强。,《通用型工频正弦波逆变器开发方案:便捷学习、强大功能、稳定运行》
三菱FX3U三轴标准程序详解:包含轴点动、回零与定位等功能,程序流程明晰,附机器人IO通讯模块与子程序调用指导,入门与答疑一站式解析,三菱FX3U三轴标准程序,包含轴点动,回零,相对与绝对定位,整个项目的模块都有:主控程序,复位程序,手动,生产计数,只要弄明白这个程序,就可以非常了解整个项目的程序如何去编写,从哪里开始下手,可提供程序问题解答,程序流程清晰明了;程序还包含与机器人I O通讯模块程序,子程序调 ,核心关键词:三菱FX3U;三轴标准程序;轴点动;回零;相对与绝对定位;主控程序;复位程序;手动;生产计数;机器人I/O通讯模块程序;子程序调。,"三菱FX3U三轴程序解析:从主控到IO通讯的完整编写流程与解答"
汇川IS620系列伺服驱动电机:源码原理图揭秘高性能交流驱动器技术,含RS-232/RS485通讯及CAN接口,刚性表设置与振动抑制功能,汇川 is620n,is620p,is620伺服驱动电机,源 码原理 图 高性能小功率的交流伺服驱动器,采用RS-232,RS485通讯接口,另有CAN通讯接口,提供了刚性表设置,惯量识别及振动抑制功能。 ,关键词:汇川; is620n; is620p; is620伺服驱动电机; 交流伺服驱动器; RS-232; RS485通讯接口; CAN通讯接口; 刚性表设置; 惯量识别; 振动抑制功能; 源码原理图。,汇川is620系列伺服驱动电机:高性能小功率交流驱动原理图解析
基于MATLAB和CPLEX平台的储能电站服务冷热电多微网双层优化配置模型与策略,MATLAB代码:基于储能电站服务的冷热电多微网系统双层优化配置 关键词:储能电站 共享储能电站 冷热电多微网 双层优化配置 参考文档:《基于储能电站服务的冷热电多微网系统双层优化配置》完全复现 仿真平台:MATLAB+CPLEX 主要内容:代码主要做的是一个共享储能电站的双层优化配置模型,将储能电站服务应用到多维网系统中,建立了考虑不同时间尺度的多维网双层规划模型,上层模型负责求解长时间尺度的储能电站配置问题,下层模型负责求解短时间尺度的多微网系统优化运行问题。 再 次,根据下层优化模型的Karush-Kuhn-Tucher(KKT)条件将下层模型转为上层模型的约束条件,采用 Big-M 法对非线性问题线性化。 ,基于MATLAB的冷热电多微网系统双层优化配置:共享储能电站的应用与仿真研究
用运算放大器设计负电阻,利用二端口使得元件的伏安曲线旋转
医院质控上报系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
自动增益控制电路的分析及仿真Multisim仿真设计
用Python画一个超酷超漂亮的中国龙源代码+详细代码注释,Python画龙年吉祥物源代码,基于turtle实现
基于MVVMLight框架的C# WPF Modbus RTU通讯协议开发实践:串口数据可视化处理与报警历史查询系统,C#WPF上位机 Modbus RTU通讯协议 使用MVVMLight框架 MVVM思想 进行项目分层 使用NPOI可进行导入Excel表格 制作报表 学习专用 使用Modbus Poll 以及Modbus Slave仿真实践通过 仿真实践项目 使用SerialInfo 进行 RTU 自己写一些简单的读写操作 可实时显示 串口仿真方传来的数据 进行可视化处理 可查询以往报警数据 在历史曲线可以看到历史 三台机器的报警比例 以及次数 , 还有报警时间以及报警数值的可视化 可以查询历史报警数据 精确到秒 ,C#; WPF上位机; Modbus RTU通讯协议; MVVMLight框架; MVVM思想; 项目分层; NPOI; 导入Excel; 制作报表; Modbus Poll; Modbus Slave仿真实践; SerialInfo; RTU读写操作; 实时显示数据; 串口仿真数据; 可视化处理; 查询报警数据; 历史曲线; 报警比例; 报警次数; 报警时间;
基于Java开发的敬老院养老院管理系统:全方位管理解决方案,源码文档齐全,部署调试无忧,基于java的敬老院养老院管理系统 源码+数据库+文档+ppt+部署调试视频齐全 系统管理员用户功能介绍: 用户管理员、员工登录、老人信息管理、床位分配管理、护工薪资管理、护工请假记录、老人请假记录、入住费用和事故记录管理以及对这些功能的增、删、改、查处理 普通管理员用户 (护工身份)功能介绍: 密码信息管理,老人信息查看,请假信息查看,护工薪资查看等 ,基于Java的敬老院养老院管理系统; 完整资源包(源码+数据库+文档+ppt+部署调试视频); 管理员功能(增删改查); 用户身份(系统管理员、普通管理员/护工); 老人信息管理; 费用与事故记录管理; 床位与护工管理。,基于Java的养老院管理系统:全功能、源码与文档一体化解决方案
鲁班去字幕_1.0.1.apk
传送门效果,可以用于VR项目,也可以是非VR项目
基于模糊规则和人工势场法的机器人路径规划与避障模拟matlab程序——可手动调整障碍物坐标与数量,matlab程序,改进人工势场法模拟机器人路径规划与避障,障碍物的个数和坐标可以手动修改。 程序采用了模糊规则与人工势场算法相结合的方式来实现路径规划与避障。 起点坐标,终点坐标,障碍物坐标,障碍物个数都可以在程序里直接改。 ,MATLAB程序; 改进人工势场法; 机器人路径规划; 避障; 模糊规则; 障碍物个数与坐标调整。,MATLAB程序:模糊规则与改进人工势场法实现机器人路径规划与避障模拟