关于获取子节点中的first|last等api探究

写于2012-4-2 清明假期的第一天 | @****

 

前言

 

      本文探究的是tangram中处理父节点寻找子节点中第一个(first)元素 | 最后一个(last)元素,以及子节点中的前一个(prev)元素 | 后一个(next)元素。

 

正文

 

在tangram的api设计中,抽离了一个接口式的api。

 

 

/*
*_matchNode 分类出来的一个公用的api---从目标元素指定的方向去找对应元素*
*@function*
*@param {String} direction -- 遍历的方向 previousSibling | nextSibling*
*@param {String} start -- 遍历开始的位置 firstChild | lastChild | previousSibling | nextSibling*
*/
ZYC.dom._matchNode = function(element,direction,start){
    element = ZYC.dom.g(element);
	for(var node = element[start];node;node=node[direction]){
	   if(node.nodeType == 1){
	      return node;
	   }
	}
};

 

1、first -- 获取子元素中的第一个元素节点

 

    思路其实就是循环从元素的firstChild开始, 遍历的方向是nextSibling

 

 

 

ZYC.dom.first = function(element){
    return ZYC.dom._matchNode(element,'nextSibling','firstChild');
};

 

2、last -- 获取子元素中的最后一个元素节点

 

    思路其实就是循环从元素的lastChild开始, 遍历的方向是previousSibling

 

 

ZYC.dom.last = function(element){
    return ZYC.dom._matchNode(element,'previousSibling','lastChild');
};

 

3、prev -- 获取前一个元素节点

 

   思路其实就是循环从该元素的previousSibling开始, 遍历的方向是previousSibling

 

 

ZYC.dom.prev = function(element){
    return ZYC.dom._matchNode(element,'previousSibling','previousSibling');
};

 

4、next -- 获取后一个元素节点

 

  思路其实就是循环从该元素的nextSibling开始, 遍历的方向是nextSibling

 

 

ZYC.dom.next = function(element){
    return ZYC.dom._matchNode(element,'nextSibling','nextSibling');
};
资源下载链接为: https://pan.quark.cn/s/abbae039bf2a 在IT领域,序列化是将对象的状态转换为可存储或传输的形式的过程,而反序列化则是将这种形式恢复为原始对象。本文将深入探讨四种常用的序列化工具:Gson、Jackson、FastJson和ProtoBuf,以及与ProtoBuf相关的proto.exe工具。 Gson(Google Gson):Gson是Google提供的Java库,用于将Java对象转换为JSON字符串,反之亦然。它使用简单,支持复杂的类型转换,包括泛型、枚举、自定义序列化和反序列化策略。Gson的优势在于其灵活性和强大的类型处理能力,使得处理JSON数据非常便捷。 Jackson(FasterXML Jackson):Jackson是另一个流行的Java JSON库,提供流式API、树模型和数据绑定等多种方式来处理JSON。Jackson以其速度和效率著称,支持注解和配置,适应不同的序列化需求。其数据绑定特性允许直接将JSON映射到Java对象,简化了JSON处理。 FastJson(阿里巴巴FastJson):FastJson是阿里巴巴开发的高性能JSON库,支持Java对象与JSON之间的转换。它以极快的速度和较低的内存消耗而闻名,特别适合处理大数据量的场景。FastJson提供简单的API,使得在Java中操作JSON变得直观且高效。 ProtoBuf(Protocol Buffers):ProtoBuf是Google开发的数据序列化协议,将结构化数据序列化为二进制格式,便于存储和网络传输。相比于JSON和XML,ProtoBuf的数据体积更小,解析速度更快。proto.exe是ProtoBuf的编译器,可以将.proto文件编译成不同语言(如Java、Python、C++)的源代码,使得在这些语言中可以直接使用
在Windchill PartsLink 10.1中,获取某个分类子节点通常涉及使用PartsLink API或其提供的客户端库,如JPLC(Java PartsLink Client)。以下是一个简化的步骤示例: 1. 首先,你需要一个连接到PartsLink服务器的API客户端,这可能需要凭据(用户名和密码)以及服务器地址。 ```java import com.plm.partslink.api.PLCClient; import com.plm.partslink.api.data.Classification; // 创建PLCClient实例 PLCClient plcClient = new PLCClient("your_server_url", "username", "password"); ``` 2. 使用`plcClient.getClassifications()`获取分类列表,然后通过分类ID找到你想操作的分类。你可以遍历分类列表并检查每个分类是否是你需要的父节点。 ```java Classification parentCategory = plcClient.getClassifications().stream() .filter(category -> category.getName().equals("Parent Category")) .findFirst() .orElse(null); ``` 3. 调用`parentCategory.getChildren()`获取该分类的子节点列表。这个方法通常返回一个`Collection<Classification>`,你可以从中查找特定的子节点。 ```java List<Classification> childCategories = parentCategory.getChildren(); for (Classification child : childCategories) { if (child.getName().equals("Desired Subnode")) { // 这里找到了你要的子节点 break; } } ``` 请注意,实际代码可能需要处理网络错误、授权失败等异常情况,并且上述示例假设`getName()`方法可以根据名称唯一标识分类。如果分类结构复杂,你可能还需要进一步定制搜索逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值