XML解析得到属性值 [英] XML Parsing to get Attribute Value
本文介绍了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屋!
查看全文