Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中使用SAX解析器检查xml标记是否具有属性?_Java_Xml_Xml Parsing_Sax_Saxparser - Fatal编程技术网

如何在Java中使用SAX解析器检查xml标记是否具有属性?

如何在Java中使用SAX解析器检查xml标记是否具有属性?,java,xml,xml-parsing,sax,saxparser,Java,Xml,Xml Parsing,Sax,Saxparser,我想问您一个关于xml文件的问题。我想通过在Java中使用SAX解析器来检查xml标记是否具有属性 有答案吗?请帮助我…SaxParser处理程序的startElement方法有一个参数,它保存与之相关联的属性列表。你可以相信。例如,该程序打印出所有带有属性的标记以及与之关联的属性名称 import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attribu

我想问您一个关于xml文件的问题。我想通过在Java中使用SAX解析器来检查xml标记是否具有属性


有答案吗?请帮助我…

SaxParser处理程序的
startElement
方法有一个参数,它保存与之相关联的属性列表。你可以相信。例如,该程序打印出所有带有属性的标记以及与之关联的属性名称

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class FindTagWithAttributes {

    public static void main(String argv[]) {

        try {

            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();

            DefaultHandler handler = new DefaultHandler() {

                public void startElement(String uri, String localName,
                        String qName, Attributes attributes)
                        throws SAXException {
                    if(attributes != null && attributes.getLength() > 0){
                        System.out.print(qName + " tag has attributes - ");
                        for(int i=0; i<attributes.getLength(); i++){
                            System.out.println(attributes.getLocalName(i));
                        }
                    }
                }

                public void endElement(String uri, String localName,
                        String qName) throws SAXException {

                }

                public void characters(char ch[], int start, int length)
                        throws SAXException {

                }

            };

            saxParser.parse("data.xml", handler);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}
import javax.xml.parsers.SAXParser;
导入javax.xml.parsers.SAXParserFactory;
导入org.xml.sax.Attributes;
导入org.xml.sax.SAXException;
导入org.xml.sax.helpers.DefaultHandler;
公共类FindTagWithAttributes{
公共静态void main(字符串argv[]){
试一试{
SAXParserFactory=SAXParserFactory.newInstance();
SAXParser SAXParser=factory.newSAXParser();
DefaultHandler=新的DefaultHandler(){
public void startElement(字符串uri、字符串localName、,
字符串(名称、属性)
抛出SAX异常{
if(attributes!=null&&attributes.getLength()>0){
System.out.print(qName+“标记具有属性-”);

对于(int i=0;i您在sax handler的startElement方法中获取属性作为参数,我真的不知道它是怎么回事。我使用此语句检查:if(attributes.getLength()){..};。顺便问一下,我想问一下,我是否只能得到带有属性的标记名。有可能吗?到目前为止你做了哪些尝试,到底是什么问题?你能编辑这个问题以显示当前代码的相关位吗?@sakura不,在sax解析器中,不可能只得到带有属性的标记名。你将得到所有的t他在处理程序的startElement中添加了标记。您需要自己将筛选逻辑放入“attributes”为空的标记中,以忽略这些标记。如果您有一个小的工作代码,请发布它。我将尽力提供帮助