当前位置: 代码迷 >> XML/SOAP >> XML的复杂关系解析,该怎么解决
  详细解决方案

XML的复杂关系解析,该怎么解决

热度:587   发布时间:2012-02-02 23:57:14.0
XML的复杂关系解析
问个问题,想问问大家一般怎么处理XML,比如,下面这段代码,在<participants>下面有多个participant,每个participant下面又有一个role,而这个role是在roles中描述的

我想问一下,这种相互包含的关系应该怎么解析呢?大家一般都是怎么做的,我用的是java做的



XML code

<?xml version="1.0" encoding="UTF-8"?>
<orgdata>
  <participants>
    <participant id="PA-b7a79138-158d-4fce-b875-61029bb85431">
      <userid>prod-coordinator</userid>
      <password>bUlBkHMDhGQMFWNZUYdBGwmcoqQ=</password>
      <firstname>Florian</firstname>
      <lastname>Lang (production coordinator)</lastname>
      <description />
      <notes />
      <isAdministrator>false</isAdministrator>
      <isAvailable>true</isAvailable>
      <roles>
        <role>RO-9b1bf293-9c1e-4868-8df0-f1f1911f5fca</role>
      </roles>
      <positions />
      <capabilities />
      <privileges>00000000</privileges>
    </participant>
  </participants>
  <roles>
    <role id="RO-d2e982aa-96b7-40df-9b27-e78a5cb0c73b">
      <name>1st AD</name>
      <description />
      <notes />
    </role>
    <role id="RO-d0e1e1d0-6413-433f-8043-56c821686eaa">
      <name>2nd AD</name>
      <description />
      <notes />
    </role>
  </roles>
  <positions />
  <capabilities />
  <orggroups>
    <orggroup id="OG-200b6b20-5023-47b7-8ef9-ad1ec55f87ff">
      <groupName>Production Office</groupName>
      <groupType>GROUP</groupType>
      <description />
      <notes />
    </orggroup>
  </orggroups>
</orgdata>




------解决方案--------------------
上面指的是 XML 文件非常大,用 SAX 来解析保证性能时应该用 HashMap 先读入 role 字典,如果 XML 本身不大,直接用 DOM (JDOM,DOM4J...) 来解析,因为都已加载到内存,直接用 XPATH 访问也很快