4

私はXMLの文字列を持っています

<ShowPercentage>     
    <SPGLevel>       
        <Level> 1 </Level>   
        <percentage>40</percentage>      
    </SPGLevel>
    <SPGLevel>       
        <Level> 2 </Level>
        <percentage>60</percentage>      
    </SPGLevel>
</ShowPercentage>

SPG レベルは繰り返し可能です。これは、キー=レベル、値=パーセンテージのマップです

この XML を Digester を使用して解析したいと考えています。誰でも始めるのを手伝ってもらえますか?

4

5 に答える 5

3

答えは次のコードのように見えるかもしれませんが、私はこれをテストしていません:

public class SampleDigester
{
  private Map<String, String> map = new HashMap<String, String>();

  public void run() throws IOException, SAXException {    
    Digester digester = new Digester();
    digester.push(this);

    digester.addCallMethod("ShowPercentage/SPGLevel", "addKey", 2);
    digester.addCallParam("ShowPercentage/SPGLevel/Level", 0);
    digester.addCallParam("ShowPercentage/SPGLevel/percentage", 1);
    digester.parse("input.xml");

  }

  public void addKey(String key, String value) {
    map.put(key, value);
  }

}
于 2012-02-15T11:24:28.153 に答える
1
digester.addObjectCreate("MerchRecomExitPopupControl/ShowPercentage", HashMap.class);
digester.addCallMethod("MerchRecomExitPopupControl/ShowPercentage/SPGLevel", "put", 2);
digester.addCallParam("MerchRecomExitPopupControl/ShowPercentage/SPGLevel/Level", 0);
digester.addCallParam("MerchRecomExitPopupControl/ShowPercentage/SPGLevel/Percentage", 1);
digester.addSetNext("MerchRecomExitPopupControl/ShowPercentage", "setShowPercentMap");

setShowPercentMap-これをヘルパークラス、文字列のマップに設定します

于 2012-02-16T07:36:09.707 に答える
1
    final String root= "root/";
    final String out= "elementOut/";
    final String in= "elementIn/";
    final String id = "id";
    final String NAME = "name";

    String namespace = reg.getFilename();
    final Digester digester = new Digester();
    digester.setValidating(false);

    digester.addObjectCreate(root, HashMap.class);
    digester.addCallMethod(root+ out, "put", 2);
    digester.addCallParam(root+ out, 0, ID);
    digester.addObjectCreate(root+ out, ArrayList.class);
    digester.addCallMethod(root+ out + in, "add", 1);
    digester.addCallParam(root+ out + in, 0, name);
    digester.addCallParam(root+ out, 1, true);
    Map<String, List<String>> map = digester.<Map<String, List<String>>> parse(reg
                .getInputStream());

対応する xml は、キーのマップを文字列として、値を文字列のリストとして一致させます。

 <root>
    <elementOut id="key1">
   <elementIn name="value1" />
       </elementOut>
   <elementOutid="key2">
   <elementIn name="value1" />
   <elementIn name="value2" />
   </elementOut>
</root>
于 2012-09-04T13:30:13.210 に答える
0

キャスターマッピングを使用することをお勧めします。

キャスターマッピング

Castor マッピングの場合、以下の手順に従う必要があります。

  1. あなたのxmlファイルを書いてください。
  2. あなたのxmlファイルに従ってmapping.xmlファイルを作ります。
  3. メインの xml ファイルに従って Pojo を作成します。
  4. すべてが終わったら、アンマーシャリング用のコードを以下に書き留めます。

    private String fileLoadPath="conf/Configuration.xml";
    private String mappingPath="conf/mapping.xml";
    
     Mapping mapping = new Mapping();
     mapping.loadMapping(mappingPath);
    
    Configuration configuration = (Configuration)new Unmarshaller(mapping).unmarshal(fileLoadPath);
    
于 2012-02-15T11:21:10.203 に答える
-1

まさにあなたが望むものではないかもしれませんが、始めるのに役立ちます

http://www.hiteshagraval.com/javascript/javascript-parsing-xml-in-javascript

于 2012-02-15T11:07:10.070 に答える