XML解析得到属性值 [英] XML Parsing to get Attribute Value

查看:244
本文介绍了XML解析得到属性值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我解析使用SAX解析器XML。万物工作正常,当我需要得到的数据是一个XML标记的主体。我得到的唯一的问题是,当我需要的数据是XML标记的属性值。我如何获得这个属性值?

 < XML ATT =值>车身和LT; / XML>
 

假设这是一个标签,我能得到身体,但不是值

code我现在用的就是:

 网​​址URL =新的URL(http://example.com/example.xml);

的SAXParserFactory SPF = SAXParserFactory.newInstance();
的SAXParser藻= spf.newSAXParser();

XMLReader的XR = sp.getXMLReader();
ExampleHandler myExampleHandler =新ExampleHandler();
xr.setContentHandler(myExampleHandler);

xr.parse(新的InputSource(url.openStream()));

公共类ExampleHandler扩展的DefaultHandler {
字符串的buff =新的String();
布尔缓冲= FALSE;

@覆盖
公共无效startDocument()抛出的SAXException {
    //某种设置工作
}

@覆盖
公共无效调用endDocument()抛出的SAXException {
    //某种完成了工作
}

@覆盖
公共无效的startElement(字符串的namespaceURI,字符串的localName,字符串QNAME,
        属性的ATT)抛出的SAXException {
    如果(localName.equals(qwerasdf)){
        BUFF =新的String();
        缓冲= TRUE;
    }
}

@覆盖
公共无效字符(字符CH [],诠释开始,诠释长度){
    如果(缓冲){
        BUFF =新的String(CH,开始,长度)
    }
}

@覆盖
公共无效的endElement(字符串的namespaceURI,字符串的localName,字符串QNAME)
抛出的SAXException {
    如果(localName.equals(嗒嗒)){
        缓冲= FALSE;
        字符串的内容= buff.toString();

        //做些什么,我们刚刚分析的全文内容
    }
}
 

解决方案

  @覆盖
公共无效的startElement(字符串的namespaceURI,字符串的localName,字符串QNAME,
        属性的ATT)抛出的SAXException {
    如果(localName.equals(XML)){
          的System.out.println(属性ATT的值是:+ atts.getValue(ATT));
    }
}
 

I am parsing a xml using SAX Parser. Everythings working fine when the data I need to get is the body of a xml tag. The only problem I am getting is when the data I need is the attribute value of that XML tag. How do i get this attribute value?

<xml att="value"> Body </xml>

Suppose this is a tag, I am able to get Body but not value

code I am using is:

URL url = new URL("http://example.com/example.xml");

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();

XMLReader xr = sp.getXMLReader();
ExampleHandler myExampleHandler = new ExampleHandler();
xr.setContentHandler(myExampleHandler);

xr.parse(new InputSource(url.openStream()));

public class ExampleHandler extends DefaultHandler { 
String buff = new String("");
boolean buffering = false; 

@Override
public void startDocument() throws SAXException {
    // Some sort of setting up work
} 

@Override
public void endDocument() throws SAXException {
    // Some sort of finishing up work
} 

@Override
public void startElement(String namespaceURI, String localName, String qName, 
        Attributes atts) throws SAXException {
    if (localName.equals("qwerasdf")) {
        buff = new String("");
        buffering = true;
    }   
} 

@Override
public void characters(char ch[], int start, int length) {
    if(buffering) {
        buff=new String(ch, start, length)
    }
} 

@Override
public void endElement(String namespaceURI, String localName, String qName) 
throws SAXException {
    if (localName.equals("blah")) {
        buffering = false; 
        String content = buff.toString();

        // Do something with the full text content that we've just parsed
    }
}

解决方案

@Override
public void startElement(String namespaceURI, String localName, String qName, 
        Attributes atts) throws SAXException {
    if (localName.equals("xml")) {
          System.out.println("The value of attribute 'att' is: " + atts.getValue("att"));
    }   
} 

这篇关于XML解析得到属性值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆