基于XML的机械工程数据表存储及检索方法的研究

   2019-09-23 36
核心提示:[db:简介]
摘要:为了适应机械设计与制造的网络化发展趋势,针对机械工程数据表常用存储方法在数据可维护性、数据互换性方面所存在的问题,提出了一种使用XML技术构造数据存储模式、以XPath 路径语言为基础进行数据检索的新方法。

1 引言

为了适应全球经济一体化的发展趋势和日益激烈的竞争环境,企业正将越来越多的业务转向基于Web 的应用,企业之间也开始逐步建立起异地设计和异地制造系统。在构建和运用这些系统进行具体产品的机械设计和工艺设计时,通常需要检索大量非常复杂而且组织结构各不相同的机械工程数据表。因此,如何设计和构建合理有效的数据存储模式以适应网络环境下异质平台之间数据共享以及数据交换的需求,便成为亟待解决的问题。
建立基于XML的机械工程数据表,不仅可以实现异质平台之间的数据交换,而且可以解决在面对复杂结构机械工程数据表时常用存储方法所存在的问题。

2 数据表常用存储方法

2.1 自定义数据文件

按照自定义的数据存储格式将数据以文本文件或者二进制形式存储在独立的数据文件当中。
采用这种方法在实现应用程序之间的数据交换时,必须建立在特定的文件存储格式的基础之上,没有统一的编程接口。

2.2 使用关系数据库

关系数据库建立在关系代数的基础之上,以二维数据表的形式来描述和存储数据。
关系数据库非常适合结构化数据的存储和检索,然而机械工程数据表的结构通常比较复杂,尽管可以通过拆分成多个二维数据表的方式来存储,但会给数据管理和数据检索带来很多不便。

3 基于XML的数据存储模式


XML已经逐渐成为Internet 环境下数据交换的标准,数据交换的核心是信息描述的标准化,作为W3C标准的XML具有天然的优势。XML的灵活性、可以各种方式对数据进行重用的能力以及构建在XML基础之上的强大技术体系,为XML的广泛应用奠定了扎实的基础。

3.1 基于XML的数据表存储模式设计

基于XML的数据表存储模式的建立应遵循如下基本原则:通过自定义标记来描述数据表的组成元素,通过标记之间的嵌套关系来描述数据表的组织结构。
假设数据表由n个元素组成,记为(元素1,元素2,…,元素n)。在数据表中根据其中n-1个元素确定某个元素,如果数据表的检索步骤确定为:元素1→元素2→…→元素n,则对应的标记嵌套关系应为
<元素1>
<元素2>
<元素n>
</元素n>
</元素2>
</元素1>
表1 硬质合金车刀车削钢料时消耗的功率表2 引入数据的两种方法嵌套子标记添加属性<切削速度>
    <值> X </值>
    <切削功率>
        <值> Y </值>
    </切削功率>
</切削速度><切削速度值= ”X”>
<切削功率值= ”Y”/>
    </切削速度>
下面通过一个实例来具体说明。在选择车削用量的计算过程中,根据已知的工件材料强度1000MPa、背吃刀量2.0mm、进给量0.25mm/r和切削速度106m/min,需要依据表1(注:表1 中背吃刀量已改为切削深度)确定切削功率。实际检索过程如表1中箭头及步骤标号① ~⑤所示。
表1所示数据表由五个基本元素组成。根据表1所示检索步骤,可确定五个标记的层次结构为
<材料强度=””硬度=””>
<背吃刀量>
<进给量>
<切削速度>
<切削功率>
</切削功率>
</切削速度>
</进给量>
</背吃刀量>
</材料>
在以上步骤中,虽然可以通过材料强度或材料硬度两个不同条件进行第一步检索,但是由于以后各个步骤所依据的元素和数据都完全相同,为了避免数据冗余,现将材料强度和材料硬度设计为同一元素的两个不同属性。

3.2 引入数据表数据

在完成了数据表存储模式的设计后,可通过嵌套子标记或添加属性的方法引入数据(如表2所示)。
对于数据表中的区间值,可以拆分为多个嵌套子标记或者多个添加属性。
表1中的材料强度/ 材料硬度值是区间值,由于各区间是连续的,可以采用区间左端点作为各个区间的分界点。如果通过添加属性来引入数据,那么表1所示数据表的存储模式如下所示:
<?xml version = ”1.0”encoding = ”gb2312”?>
<数据表>
<材料强度=”0”硬度=”0”>
<背吃刀量值=”2.0”>
<进给量值= ”0.25”>
… ①
<切削速度 值=”86”>
<切削功率 值=”1.0”/>
</切削速度>
<切削速度 值=”106”>
<切削功率 值=”1.2”/>
</切削速度>
… ②
</进给量>
… ③
</背吃刀量>
… ④
</材料>
<材料强度=”580” 硬度=”165”>
… ⑤
</材料>
<材料强度=”970” 硬度=”277”>
… ⑥
</材料>
</数据表>
以上模式中①、②表示当材料强度<580MPa或材料硬度<165HBS、背吃刀量为2.0mm、进给量为0.25mm/r时所对应的其它各个切削速度;③表示当材料强度<580MPa或材料硬度<165HBS、背吃刀量为2.0mm时所对应的其它各个进给量;④表示当材料强度<580MPa或材料硬度<165HBS时所对应的其它各个背吃刀量;⑤表示当材料强度为580 ~970MPa 或材料硬度为165~277HBS 时所对应的各个背吃刀量;⑥表示当材料强度>970MPa或材料硬度>277HBS时所对应的各个背吃刀量。

4 基于XPath 的数据检索方法

XML文档可以用树形结构表示,XML标记一般称为树的节点。在XML文档中查找树中某个特定节点的过程被形象地称为“走树”。
XML的路径语言——XPath建立在XML的基础之上,主要用于XML文档的数据检索和数据过滤。XPath的语法相当简洁,其基本语法形式为:axis::nodetest[predicate]。axis指出了检索方向。假设当前环境节点为节点7,那么axis的定义。如果检索方向为child 轴,则axis可省略不写。nodetest和predicate分别依据节点名称和指定条件进行筛选。表1所示的检索过程对应的XPath语句为
/数据表/材料[@强度<=1000][last()]/背吃刀量[@值=2.0]/进给量[@值=0.25]/切削速度[@值=106]/切削功率
该语句的具体执行过程。
在某些情况下,背吃刀量、进给量和切削速度并不是表1中的标准值,这时可根据实际情况将限定条件从等式改为不等式或者增加限定条件。

5 基于C#的实用程序设计

目前成熟的XML解析器有Microsoft XML4.0Parser、Saxon等,这些XML解析器都能够处理XPath。反映了应用程序、XML数据表和XML解析器三者之间的关系。
步骤①表示将XML数据表装入应用程序;步骤②表示应用程序向解析器发送XPath 检索语句,解析器返回执行结果。下面给出在C#中的实现方法(其它语言完全类似):
using System;
using System.Xml;
public class XmlSearch{
public static void Main(){
Xmldocument doc=new Xmldocument();doc. Load(”sheet. xml”);/ / 装入XML数据表
XmlNode power=doc.SelectSingleNode(”/ 数据表/材料[@强度<=1000][last()]/背吃刀量[@值=2.0]/进给量[@值=0.25]/切削速度[@值=106]/切削功率/@值”);
Console.WriteLine(power.Value);}}
运行环境:Windows2000、. NET framework 1. 0、Microsoft XML4.0 Parser。

6 结论

本文根据工程应用实际,利用XML的灵活性和构建在XML之上的强大技术体系,针对具体数据表的组成元素和组织结构,设计XML标记和相应的存储模式,遵照数据表的检索步骤组织XPath语句,利用XML解析器执行XPath 语句进行数据检索,为机械工程数据表的数据存储和数据检索开辟了一条新的思路,提供了新的方法。通过将本文所述方法与艾兴,肖诗纲所著《切削用量简明手册(第3版)》、徐灏所著《机械设计手册(第2版)》中的具体数据表相结合进行的广泛验证,表明该方法具有普遍适用性。
 
举报收藏 0打赏 0
 
更多>同类数控技术
推荐图文
推荐数控技术
点击排行
网站首页  |  关于我们  |  升级会员  |  联系客服  |  广告合作  |  广告位图  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  RSS订阅  |  违规举报  |  蜀ICP备2021024440号