反转XML文件中的父子关系

2003-1-2 11:29:14【作者】 AMTeam.org 【进入论坛】
广告

反转XML文件中的父子关系

 


问题的提出

首先给出命题。用XML构造家庭树很能说明问题:实际上无法描述整个家庭树。因为一个XML文件只有一个根节点或一个祖先,而一个家庭则有(父母)二个祖先。

也许可以定义一个虚的根节点,让它包含父母二个祖先节点,比如:

<TheSmiths>

<JohnSmith>

<BettySmith>

</TheSmiths>

按照这个方法,可以往下定义Smith的儿子、孙子、重孙子等等。但是换一个角度考虑,就会出现新的问题。

这是一种着眼于纯XML数据结构的方法,所以定义了一个虚的根节点。如果从实际需求出发,考虑家庭的根与树的衍生就会有问题。可以发现只能从一个祖先节点衍生出家庭的子孙节点,现在多了一个祖先节点,要么让它成为瘸腿树(例如母亲节点以下为空),要么从父母二个节点都衍生出完全相同的子树。总之,都有问题。

新思路

解决上面这个问题的方法是改变XML构造层次的思路。不要想当然地将家庭的祖先作为XML的根,而是用家庭的子孙作为XML的根。

下面用一个示例来说明层次关系反转的思路和用法。

LISTING 1 构造的是虚拟人物John Smith的祖先。

LISTING 1: johnsmith.xml

<?xml version="1.0" ?>

<JohnSmith>

<JeffersonSmith>

<WilliamSmith>

<RichardSmith>

</RichardSmith>

<AdelaideBrooksSmith>

</AdelaideBrooksSmith>

</WilliamSmith>

<RebeccaCorruthersSmith>

<GeorgeCorruthers>

</GeorgeCorruthers>

<SvetlanaMironovCorruthers>

</SvetlanaMironovCorruthers>

</RebeccaCorruthersSmith>

</JeffersonSmith>

<DeloresJonesSmith>

<ArchibaldJones>

<BenjaminJones>

<ArthurJones>

</ArthurJones>

<PauletteBoudinJones>

</PauletteBoudinJones>

</BenjaminJones>

<ElizabethBennettJones>

<GeoffreyBennett>

</GeoffreyBennett>

<BeatriceBennettBaughman>

</BeatriceBennettBaughman>

</ElizabethBennettJones>

</ArchibaldJones>

<WilmaStockhausenJones>

<GuntherStockhausen>

</GuntherStockhausen>

<UlmaWeinerbraugStockhausen>

</UlmaWeinerbraugStockhausen>

</WilmaStockhausenJones>

</DeloresJonesSmith>

</JohnSmith>

新的关系轴,新的思维角度

上面例子的根节点是JohnSmith元素,所有的子节点都是他的祖先。按照XML层次关系,其它节点又都是根节点的“子”节点。每个节点都含有二个子节点表示该节点的父母。是不是感到很乱?下面是个基本的树结构,能清楚地说明这个新思路:

<person>

<mom/>

<dad/>

</person>

每个人(person)的子节点实际上是这个人的父亲(dad)和母亲(mom)。每个父亲节点(dad)或母亲节点(mom)的父节点则是该节点的儿女(person)。

由于反转了XML文件中的父子关系,可以更加清楚地观察到John Smith的祖先。

结论

我们所做的事是从根本上改变解决问题的思路。这个方法也有缺点,比如不能显示祖先的兄弟姐妹。但是它能够直接从子节点上追溯祖先。可以按照这个方法继续增加祖先节点,而不必改变可用于第一个示例的XPath描述。

如果您希望与本文章的作者或其所在机构,进一步交流,请联系:姜小姐
jill.jiang@amt.com.cn | 021-51096826-112 | 在线联系
吕建伟 专栏 像咨询师一样思考---走出软件..

所以说,管理软件,要有竞争力,必然是在管理方法上竞争。这是目前能提高软件售价的唯一出路。

企业信息化杂谈[原创]国内企业信息化很难回避..

国内企业信息化所面临的环境与西方企业、外资企业、或者合资企业有很大的不同,这就决定了国内企业信息化有自己的特点。

CIO职场,强者生存?

在2008年,我们将继续看到CIO向商业运营方向发展。与此同时,我们也会看到商业管理人员将与技术管理人员一起竞争CIO岗位。 IT领导者的就职机会虽有不少,但其难度将会大幅提高。2……

防震减灾,IT当关

今天,任何的防震救灾体系,都离不开IT技术。地震观测台是数字化的,震害防御需要对以往的地震信息进行数据分析,应急救援要需要现代多样化的通讯技术。如果说,在许多行业,信息技术还只是一……