【发布时间】:2011-05-08 16:53:23
【问题描述】:
我有一个包含多个表节点结构副本的 XML 文件,如下所示:
<databasetable TblID=”123” TblName=”Department1_mailbox”>
<SelectColumns>
<Slno>dept1_slno</Slno>
<To>dept1_to</To>
<From>dept1_from</From>
<Subject>dept1_sub</Subject>
<Body>dept1_body</Body>
<BCC>dept1_BCC</BCC>
<CC>dept1_CC</CC>
</SelectColumns>
<WhereCondition>MailSentStatus=’New’</WhereCondition>
<UpdateSuccess>
<MailSentStatus>’Yes’</MailSentStatus>
<MailSentFailedReason>’Mail Sent Successfully’</MailSentFailedReason>
</UpdateSuccess>
<UpdateFailure>
<MailSentStatus>’No’</MailSentStatus>
<MailSentFailedReason>’Mail Sending Failed ’</MailSentFailedReason>
</ UpdateFailure>
</databasetable>
由于每次遍历文件来获取程序中查询的每个节点的详细信息并不是一种有效的方式,因此我在第一次遍历XML文件时使用了嵌套的hashmap概念来存储详细信息.我使用的结构如下:
MapMaster
Key Value
123 MapDetails
Key Value
TblName Department1_mailbox
SelectColumns mapSelect
Key Value
Slno dept1_slno
To dept1_to
From dept1_from
Subject dept1_sub
Body dept1_body
BCC dept1_BCC
CC dept1_CC
WhereCondition MailSentStatus=’New’
UpdateSuccess mapUS
MailSentStatus ’Yes’
MailSentFailedReason ’Mail Sent Successfully’
UpdateFailure mapUF
MailSentStatus ’No’
MailSentFailedReason ’Mail Sending Failed’
但我现在面临的问题是关于使用嵌套键检索值部分。例如,
如果我需要 Slno Key 的值,我必须以嵌套形式指定 TblID、SelectColumns、Slno,例如:
Stirng Slno = ((HashMap)((HashMap)mapMaster.get(“123”))mapDetails.get(“SelectColumns”))mapSelect.get(“Slno”);
这不适合在程序中使用。请提出解决方案,但不要告诉迭代器可用。因为我必须根据程序的需要从地图中获取单个值。
编辑:我的程序必须获取有权发送邮件的部门的 ID,然后将这些 ID 与 XML 文件中的 ID 进行比较。仅从返回 true 的 XML 中获取这些 ID 的信息。这就是我的全部程序。请帮忙。
提前致谢, 毗湿奴
【问题讨论】: