0

xml ファイルの解析に SAX を使用していますが、「y」の値を取得できません。

これがxmlです。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type= "text/html" ?>
<Chart1 count="3">
            <Sales_x0020_Amount Label="Sales Amount">
               <Chart1_CategoryGroup_Collection>
                  <Chart1_CategoryGroup Label="URC 1">
                     <Value Y="30434929.1" />
                     <name>keeevin</name>
                  </Chart1_CategoryGroup>
                  <Chart1_CategoryGroup Label="URC 2">
                     <Value Y="39757503.83" />
                     <name>kevin2</name>
                  </Chart1_CategoryGroup>
                  <Chart1_CategoryGroup Label="URC 3">
                     <Value Y="19611069.73" />
                     <name>kevin</name>
                  </Chart1_CategoryGroup>
               </Chart1_CategoryGroup_Collection>
            </Sales_x0020_Amount>
</Chart1>

属性「name」の値は取得できますが、「y」の値は取得できません。

値を取得するためのコードの一部..

Element e = (Element)nodes.item(i);
map.put("Name", "Name:" + XMLfunctions.getValue(e, "name"));
map.put("Y", "Y Coord:" + XMLfunctions.getValue(ee, "y"));

ありがとう。

編集:ここにブレークポイントを設定しましたが、ここでは通過しません。

static class MyHandler extends DefaultHandler {
    public void startElement(String namespaceURI, String localName,
                             String qName, Attributes atts)  {
        // Get the number of attribute
        int length = atts.getLength();

    // Process each attribute
    for (int i=0; i<length; i++) {
        // Get names and values for each attribute
        String name = atts.getQName(i);
        String value = atts.getValue(i);
        if(qName == "Value"){
             y = atts.getValue(i);
        }
        String nsUri = atts.getURI(i);
        String lName = atts.getLocalName(i);
    }
}

}

これを使用して解決しました:

    public void startElement(String uri, String localName, String qName,
                Attributes attributes) throws SAXException {

            elementOn = true;

    if (localName.equals("Chart"))
            {
                data = new XMLGettersSetters();
            }
            if (qName.equals("Value")) {
                String attributeValue = attributes.getValue(0);
                data.setValue(attributeValue);
            }
}
4

2 に答える 2

1

あなたの開始要素はチャートであり、そのカウントは属性であり、それは if 部分にあり、else if 部分よりも Sales_x0020_Amount が来て、その属性は Label になります。このチュートリアルを参照してください。

于 2013-10-28T11:15:50.927 に答える