4

次の形式のXMLドキュメントをDOMで解析する方法を知っています。

<tagname> valueIWant </tagname>

ただし、現在取得しようとしている要素は、代わりに次の形式になっています。

<photo farm="9" id="8147664661" isfamily="0" isfriend="0" ispublic="1" 
       owner="8437609@N04" secret="4902a217af" server="8192" title="Rainbow"/>

私は通常cel.getTextContent()、値を返すために使用しますが、この場合は機能しません。どちらもうまくいかないcel.getAttributes()と私は思った...

理想的には、idとownerの数値を取得するだけです。しかし、誰かがそれをすべて手に入れる方法を手伝ってくれるなら、私は後で不要な部分を取り除くことに対処することができます。

4

2 に答える 2

1

取得しようとしているのは、要素に関連付けられているさまざまな属性の値です。getAttribute(String name)これを達成するための方法の使用を見てください

すべての属性を取得したい場合は、それを使用getAttributes()して繰り返し処理することができます。これらの両方の方法の例は、次のようになります。

private void getData(Document document){
    if(document == null)
        return;

    NodeList list = document.getElementsByTagName("photo");
    Element photoElement = null;

    if(list.getLength() > 0){
        photoElement = (Element) list.item(0);
    }

    if(photoElement != null){
        System.out.println("ID: "+photoElement.getAttribute("id"));
        System.out.println("Owner: "+photoElement.getAttribute("owner"));

        NamedNodeMap childList = photoElement.getAttributes();
        Attr attribute;

        for(int index = 0; index < childList.getLength(); index++){
            if(childList.item(index).getNodeType() == Node.ATTRIBUTE_NODE){
                attribute = ((Attr)childList.item(index));
                System.out.println(attribute.getNodeName()+" : "+attribute.getNodeValue());
            }else{
                System.out.println(childList.item(index).getNodeType());
            }
        }
    }
}
于 2012-11-02T15:22:20.273 に答える
0

何かのようなもの:

Element photo = (Element)yournode;
photo.getAttribute("farm");

ファーム属性の値を取得します。これらの属性にアクセスするには、ノードを要素として扱う必要があります(doc)。

于 2012-11-02T15:25:11.307 に答える