1

だから私はこれを行う方法を検索して検索しようとしましたが、必要なものについて多くの複雑な答えを見続けています. 私は基本的に Flurry Analytics API を使用して、HTTP 要求からいくつかの xml コードを返しています。これが返されるものです。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<eventMetrics type="Event" startDate="2011-2-28" eventName="Tip Calculated" endDate="2011-3-1" version="1.0" generatedDate="3/1/11 11:32 AM">
<day uniqueUsers="1" totalSessions="24" totalCount="3" date="2011-02-28"/>
<day uniqueUsers="0" totalSessions="0" totalCount="0" date="2011-03-01"/>
<parameters/>
</eventMetrics>

私が取得したいのは、Javaでintまたはstringに3であるtotalCount数です。私はさまざまな DOM および SAX メソッドを調べましたが、それらはタグの外側の情報を取得しているようです。タグ内で totalCount を取得する方法はありますか?

ありがとう、

アップデート

この URL を見つけました - http://www.androidpeople.com/android-xml-parsing-tutorial-%E2%80%93-using-domparser/

それがアンドロイドにあったことを考えると、それは私を助けました。しかし、私を助けてくれた回答者全員に感謝します。私はすべての回答をチェックしましたが、何が起こっているのかを理解するのに少し役立ちました. ただし、xml を取得するには最初に HTTP 投稿が必要なため、URL から xml を取得できないようです。私のURLからxmlを取得しようとすると、ファイルが見つからないと表示されます。

更新 2

私は今それを読んですべてを整理し、Flurry Analyticsからxmlを取得しました(誰かがこの質問に出くわした場合の参照用)

XML ファイルの HTTP リクエスト

4

4 に答える 4

4

totalCountこれを属性と呼びます。org.w3c.domAPIを使用している場合は、適切な要素でgetAttribute( "totalCount")を呼び出します。

于 2011-03-01T20:30:50.240 に答える
4

SAX ハンドラーを使用している場合は、属性にアクセスするために startElement コールバック メソッドをオーバーライドします。

public void startElement (String uri, String name, String qName, Attributes atts)
{
    if("day".equals (qName)) {
      String total = attrs.getValue("totalCount");
    }
}
于 2011-03-01T20:40:14.737 に答える
2

JDOM の例。ドキュメントをロードするために SAXBuilder を使用していることに注意してください。

URL httpSource = new URL("some url string");
Document document = SAXBuilder.build(httpSource);
List<?> elements = document.getDescendants(new KeyFilter());

for (Element e : elements) {
  //do something more useful with it than this
  String total = (Element) e.getAttributeValue("totalCount");
}

class KeyFilter implements Filter {
  public boolean matches (Object obj) {
    return (Element) obj.getName().equals("key");
  }
}
于 2011-03-01T20:37:14.947 に答える
0

最も簡単な方法は XPath を使用することだと思います。以下は vtd-xml に基づいた例です。

  import com.ximpleware.*; 
    public class test {
        public static void main(String[] args) throws Exception {
            String xpathExpr = "/eventMetrics/day/@totalCount";
            VTDGen vg = new VTDGen();
            int i = -1;

            if (vg.parseHttpUrl("http://localhost/test.xml", true)) {
                VTDNav vn = vg.getNav();
                AutoPilot ap = new AutoPilot();
                ap.selectXPath(xpathExpr);
                ap.bind(vn);
                System.out.println("total count "+(int)ap.evalXPathtoDouble());
                    }
        }
    }
于 2011-03-01T21:42:09.200 に答える