<Details><propname key="workorderid">799</propname>
如何从使用SAXParing的workorderid获得799? 当我使用这个代码时,我得到“workorderid”但不是workorderid的价值
if(localName.equals("propname")){
String workid = attributes.getValue("key");
答案 0 :(得分:0)
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();
}
是正确的。
你需要得到值propname。
{{1}}
答案 1 :(得分:0)
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.
}
}
可能在某个地方错了,我赶时间。如果有帮助欣赏。
答案 2 :(得分:0)
以下将保存节点的值。
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.
}