<Details><propname key="workorderid">799</propname>
如何使用 SAXParing 从 workorderid 获得 799?当我使用此代码时,我得到“workorderid”但不是 workorderid 的值
if(localName.equals("propname")){
String workid = attributes.getValue("key");
在具有正确值propname
的属性中。您需要获取值 propname。Key
workorderid
//Provide you tagname which is propname
NodeList nl = ele.getElementsByTagName(tagName);
if(nl != null && nl.getLength() > 0) {
Element el = (Element)nl.item(0);
textVal = el.getFirstChild().getNodeValue();
}
if(localName.equals("propname")){
//在此处设置一个标志并在 endElement() 中获取与您的 localname(propname) 关联的值 String workid = attributes.getValue("key");
我正在为您提供代码,尝试以您的方式理解和定制。
public class ExampleHandler extends DefaultHandler {
private String item;
private boolean inItem = false;
private StringBuilder content;
public ExampleHandler() {
items = new Items();
content = new StringBuilder();
}
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
content = new StringBuilder();
if(localName.equalsIgnoreCase("propname")) {
inItem = true;
} else attributes.getValue("key");
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
if(localName.equalsIgnoreCase("propname")) {
if(inItem) {
item = (content.toString());
}
}
public void characters(char[] ch, int start, int length)
throws SAXException {
content.append(ch, start, length);
}
public void endDocument() throws SAXException {
// you can do something here for example send
// the Channel object somewhere or whatever.
}
}
可能有什么地方出错了,我很着急。如果帮助欣赏。
以下将保存节点的值。
public void characters(char[] ch, int start, int length) throws SAXException {
tempVal = new String(ch,start,length);
}
在事件处理程序方法中,您需要像这样获取它:
if(qName.equals("propname")) {
System.out.println(" node value " + tempVal); // node value
String attr = attributes.getValue("key") ; // will return attribute value for the propname node.
}