<Details><propname key="workorderid">799</propname>
SAXParingを使用してworkorderidから799を取得するにはどうすればよいですか?このコードを使用すると、「workorderid」は取得されますが、workorderidの値は取得されません
if(localName.equals("propname")){
String workid = attributes.getValue("key");
if(localName.equals("propname")){
// ここで 1 つのフラグを設定し、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.
}
正しい値を持つ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();
}