2017-02-03 48 views
-1

我有一個關於xml解析的問題。Java - 如何解析無盡的遞歸結構的XML?

我想開發一個Java DOM解析器(或Java中任何其他)能夠解析與結構的XML,如下面:

<root> 
    <parameters> 
     <parameter> <!-- ParameterA --> 
      <name>a</name> 
      <values> <!-- possible values for ParameterA --> 
       <value> 
        <name>a1</name> 
        <parameter> <!-- ParameterB dependent of ParameterA --> 
         <name>a11</name> 
         <values> <!--possible values for ParameterB --> 
          <value> 
           <name>a111</name> 
          </value> 
          <value> 
           <name>a112</name> 
          </value> 
         </values> 
        </parameter> 
       </value> 
       <value> 
        <name>a2</name> 
        <parameter> <!-- ParameterC dependent of ParameterA --> 
         <name>a22</name> 
         <values> <!--possible values for ParameterC --> 
          <value> 
           <name>a222</name> 
          </value> 
         </values> 
        </parameter> 
       </value> 
      </values> 
     </parameter> 
     <parameter> <!-- ParameterX --> 
      <name>b</name> 
      <values> <!-- possible values for ParameterX --> 
       <value> 
        <name>b1</name> 
       </value> 
      </values> 
     </parameter> 
    </parameters> 
</root> 

要恢復XML strucutre:

  • 參數具有名稱和可能值列表(參數可能沒有值)。
  • 值有名稱並且可以包含參數。

例如

如果ParameterB是依賴於參數α,那麼,參數α將有他的價值標籤中的參數標籤,將有關於parameterB等信息......

我希望我的Dom解析器能夠根據xml層次結構(相對於它們的值)檢索所有參數組合。

對於上面的例子中,DOM解析器應該返回

>> a-a1-a11-a111-b-b1 
>> a-a1-a11-a112-b-b1 
>> a-a2-a22-a222-b-b1 

我不知道這是可能的,我一直在敲我的頭超過這個天...

謝謝,

請不要回避建議。

+0

你有試過什麼嗎?如果是這樣,你有什麼嘗試 – Gab

回答

0

你有一個遞歸數據結構,所以顯而易見的方法是讓你的DOM「解析器」遞歸。事實上,如果您使用基於DOM的提取器,則沒有真正的選擇。

不過,我覺得你的問題是,你正試圖在同一時間做兩件事情,這些都是:

  • 找出所有可能的值的每個參數
  • 形式的所有可能的這些值的組合

如果分開執行這兩個任務,則代碼更容易。