我正在使用SAX解析xml文件而我无法获得“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);
}
}
答案 0 :(得分:1)
你的startelement将是图表,并且该计数将是属性,它将出现在if部分,而不是在else中,如果部分Sales_x0020_Amount将来,并且该属性将是Label。请参阅此tutorial。
答案 1 :(得分:0)
在Handler的startElement方法中(扩展DefaultHandler)写
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (qName.equals("Value")) {
map.put("Y", "Y Coord:" + attributes.getValue(0));
}
}