0
<Details><propname key="workorderid">799</propname>

如何使用 SAXParing 从 workorderid 获得 799?当我使用此代码时,我得到“workorderid”但不是 workorderid 的值

if(localName.equals("propname")){
String workid = attributes.getValue("key");
4

3 回答 3

0

在具有正确值propname的属性中。您需要获取值 propname。Keyworkorderid

  //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();
        }
于 2012-05-29T07:59:43.267 回答
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.
    }

}

可能有什么地方出错了,我很着急。如果帮助欣赏。

于 2012-05-29T08:06:03.640 回答
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.
}
于 2012-05-29T08:06:10.930 回答