2012-05-01 18 views
0

から抽出したデータを使用して正規表現を作成します。私はこのようなテキストを持つノードを持つXMLファイル、パースだXMLファイル

:私は何を取得したいことは、このような値である

<?xml version="1.0" encoding="iso-8859-1"?> 
<country> 
    <name> France </name> 
    <city> Paris </city> 
    <region> 
    <name> Nord-Pas De Calais </name> 
    <population> 3996 </population> 
    <city> Lille </city> 
    </region> 
    <region> 
    <name> Valle du Rhone </name> 
    <city> Lyon </city> 
    <city> Valence </city> 
    </region> 
</country> 

country -> name.city.region* 
region -> name.(population|epsilon).city* 
name -> epsilon 
city -> epsilon 
population -> epsilon 

私はそれを行う方法を見つけられません

+0

@SalmanAあなたはイムは、JDOMパーサーを使用して、私のXMLファイルを解析し、質問が表示されていない、と私は –

+0

@hisは、正規表現を使用してXMLファイルを解析しませイムXMLファイルへの正規表現の仲間を取得したいです、私は正規表現を生成したい –

+0

文法を作りたいですか? DTDやXSDのように? –

答えて

2

私はサンプルプログラムを追加しました。同じように読んでください。

public class TextXML { 

    public static void main(String[] args) { 
     try { 

      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder builder = factory.newDocumentBuilder(); 
      Document doc = builder.parse(new File("text.xml")); 

      // list of country elements 
      NodeList listOfCountry = doc.getElementsByTagName("country"); 
      for (int s = 0; s < listOfCountry.getLength(); s++) { 

       Node countyNode = listOfCountry.item(s); 

       if (countyNode.getNodeType() == Node.ELEMENT_NODE) { 

        Element countyElement = (Element) countyNode; 

        NodeList nameList = countyElement.getElementsByTagName("name"); 
        // we have only one name. Element Tag 
        Element nameElement = (Element) nameList.item(0); 
        System.out.println("Name : " + nameElement.getTextContent()); 

        NodeList cityList = countyElement.getElementsByTagName("city"); 
        // we have only one name. Element Tag 
        Element cityElement = (Element) cityList.item(0); 
        System.out.println("City : " + cityElement.getTextContent()); 

        NodeList regionList = countyElement.getElementsByTagName("region"); 
        // we have only one name. Element Tag 
        Element regionElement = (Element) regionList.item(0); 
        System.out.println("Region : " + regionElement.getTextContent()); 

        //continue further same way. 
       } 

      } 

     } catch (SAXParseException err) { 
      err.printStackTrace(); 
     } catch (SAXException e) { 
      Exception x = e.getException(); 
      ((x == null) ? e : x).printStackTrace(); 

     } catch (Throwable t) { 
      t.printStackTrace(); 
     } 
    } 

} 
+0

を見てください長いファイルを持っている場合は –

+0

自分でテストしなければなりません。 –

+0

JAXBでも試すことができます。これは、XMLコンテンツからデータを読み取るための、きれいでクリーンな方法です。 –

関連する問題