Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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解析器的输出中出错_Java_Xml_Saxparser - Fatal编程技术网

Java 简单SAX解析器的输出中出错

Java 简单SAX解析器的输出中出错,java,xml,saxparser,Java,Xml,Saxparser,我在香港看到了一个例子- 我试图通过对上一页中的代码进行以下修改,使其适用于xml文件(如下所示)—— 1 - Have only two if blocks in startElement() and characters() methods. 2 - Change the print statements in above methods, ie FIRSTNAME and First Name = passenger id LASTNAME and Last Name =

我在香港看到了一个例子- 我试图通过对上一页中的代码进行以下修改,使其适用于xml文件(如下所示)——

1 - Have only two if blocks in startElement() and characters() methods.
2 - Change the print statements in above methods, ie 
    FIRSTNAME and First Name = passenger id
    LASTNAME and Last Name = name        
问题是-在输出中,我看到的是单词passenger,而不是passenger id的值。如何解决这个问题

<?xml version="1.0" encoding="utf-8"?>
<root xmlns:android="www.google.com">

<passenger id="001">
<name>Tom Cruise</name>
</passenger>

<passenger id="002">
<name>Tom Hanks</name>
</passenger>

</root>

在startElement中,当它用于“乘客”时,您得到的属性参数将具有该值

public void startElement(String uri, String localName,
    String qName, Attributes attributes)
        throws SAXException {
    if (qName.equalsIgnoreCase("passenger") && attributes != null){
        System.out.println(attributes.getValue("id"));
    }
}

我们可以看看你的代码吗?@BrianAgnew-现在添加了代码。如果还需要什么,请告诉我。谢谢答案就在这里-事实上我没有正确理解主代码。我修改了我的代码(如下),但仍然看不到乘客id。>>>>>>>>>>>>>>>>>>>>>>>>>>>>>公共无效startElement(字符串uri、字符串localName、字符串qName、属性属性)抛出SAXException{System.out.println(“开始元素:+qName”);if(localName.equalsIgnoreCase(“乘客id”)){System.out.println(“乘客:+attributes.getValue(“id”);}if(qName.equalsIgnoreCase(“乘客id”)){bfname=true;}if(qName.equalsIgnoreCase(“name”){blname=true;}我已经更新了在startElement中使用qName的代码。它比较并打印乘客id。我将localName更改为qName,但我遇到了相同的问题-没有id,只打印乘客单词。您使用的是SAXParserFactory和SAXParser的什么实现?它与Java 7附带的默认实现完全一致。
public void startElement(String uri, String localName,
    String qName, Attributes attributes)
        throws SAXException {
    if (qName.equalsIgnoreCase("passenger") && attributes != null){
        System.out.println(attributes.getValue("id"));
    }
}