0

私はjavaを使用しています。次のようなxmlファイルがあります。

<?xml version="1.0"?>
      <personaldetails>
          <phno>1553294232</phno>
          <email>
                <official>xya@gmail.com</official>
                <personal>bk@yahoo.com</personal>
          </email>
      </personaldetails>

ここで、特定の条件を使用して各タグ値のタイプを確認し、それらを別々のファイルに入れる必要があります。

たとえば、上記のファイルでは、10桁が電話番号に等しいなどの条件を記述します。xxx@yy.comの形式の何かは電子メールです。

したがって、私がする必要があるのは、各タグのタグ値を抽出する必要があり、それが特定の条件に一致する場合、2番目のテキストファイルにない場合は、最初のテキストファイルに入れられます。その場合、最初のテキストファイルには次のものが含まれます。

1553294232
xya@gmail.com
bk@yahoo.com

2番目のファイルの残りの値。

タグ名を使用せずに(またはGetElementsByTagNameを使用せずに)タグ値を抽出する方法がわかりません。mailing>つまり、このコードは、タグの代わりに<を指定しても、電子メールbk@yahoo.comを抽出する<personal>必要があります。タグ名に依存しないようにする必要があります。

混乱しないことを願っています。xmlを使用するJavaは初めてです。したがって、質問がばかげている場合はご容赦ください。助けてください。

4

2 に答える 2

2

XPathの典型的なユースケースのようです

XPathを使用すると、非常に柔軟な方法でXMLを照会できます。

このチュートリアルは次のことに役立ちます。

http://www.javabeat.net/2009/03/how-to-query-xml-using-xpath/

Javaスクリプトを使用している場合は、getElementsByTagName()について言及しているので、JQueryセレクターを使用するだけで、ブラウザー間で一貫した動作が得られ、JQueryライブラリは他の多くのことに役立ちます。 、まだ使用していない場合は... http://api.jquery.com/category/selectors/

たとえば、これに関する情報は次のとおりです。

http://www.switchonthecode.com/tutorials/xml-parsing-with-jquery

于 2012-09-04T00:55:47.117 に答える
1

elementあなたは自分の名前を知らないので、DOMツリーを作成してそれを反復することをお勧めします。を取得するelementと、それを自分のファイルと照合してruleset(この目的でを使用することをお勧めしregexます)、それを a ファイルに書き込みます。

これは開始に役立つサンプル構造ですが、要件に基づいて変更する必要があります。

public void parseXML(){
    try{
        DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        Document doc; 

        doc = documentBuilder.parse(new File("test.xml"));
        getData(null, doc.getDocumentElement());
    }catch(Exception exe){
        exe.printStackTrace();
    }
}

private void getData(Node parentNode, Node node){

    switch(node.getNodeType()){
        case Node.ELEMENT_NODE:{

            if(node.hasChildNodes()){
                NodeList list = node.getChildNodes();
                int size = list.getLength();

                for(int index = 0; index < size; index++){
                    getData(node, list.item(index));
                }
            }

            break;
        }

        case Node.TEXT_NODE:{
            String data = node.getNodeValue();

            if(data.trim().length() > 0){
                /*
                 * Here you need to check the data against your ruleset and perform your operation
                 */
                System.out.println(parentNode.getNodeName()+" :: "+node.getNodeValue());
            }
            break;
        }

    }
}

Chain of Responsibilityルールセットを設計するには、設計パターンを参照することをお勧めします。

于 2012-09-04T01:39:47.610 に答える