0

要素xxとxxtで構成されるxmlがあります。各xxtには、1つ以上のxx要素が含まれています。各xxには、「cap」属性と「act」属性があります。私がする必要があるのは、マップに保存されているすべてのcap-act値を配置することです。

ここで、私のxmlには0または無期限のxxtを含めることができることに注意してください。したがって、これは再帰的に実行する必要があります。今のところ、xxt要素がないときに単純な解析を実行しました:

  for (Element element: (List<Element>) minfo.elements()) {
        if (element.getName().equals("xx")) {
            String cap = element.attributeValue("cap").trim();
            String act = element.attributeValue("act").trim();
            map.put(cap,act);
        }
        else if(element.getName().equals(xxt)){
            //TODO recursive method 
        }
    }

xmlの例は次のようになります。

    <xx cap="Min" act="act1"/>
    <xx cap="Ver" act="asd" />
    <xx cap="Tan" act="fw" />
    <xxt id="PR" cap="A">
      <xx cap="tY" act="ate" />
      <xx cap="Tn" act="bga" />
      <xx cap="Tn" act="sga" />
      <xxt cap="an" act="y34" />
          <xx cap="Miu" act="sahg"/>
      </xxt>
    </xxt>
    <xx cap="Mzt" act="act1"/>
4

1 に答える 1

1

ノードのパラメータを取り込んでその子を分析および処理するメソッドを作成するだけです。

'xx'が見つかると、マップに追加されます。'xxt'が見つかったら、'xxt'ノードをパラメーターとして渡して関数を呼び出します。

public function void analyze(Element element) {
    for (Element child : (List<Element>) element.elements()) {
        if (child.getName().equals("xx")) {
            String cap = child.attributeValue("cap").trim();
            String act = child.attributeValue("act").trim();
            map.put(cap,act);
        } else if(child.getName().equals("xxt")){
            analyze(child);
        }
    }
}

// To start recursivity
analyze(minfo);

このコードはコンパイルされませんが、例を示すためのものです。

于 2012-10-25T07:13:23.583 に答える