1

以下のファイルを解析しようとしています。各乗客の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>

更新 これは私が試したものです。ここに記載されているコード、問題など- 単純なSAXパーサーの出力エラー

4

4 に答える 4

2

これが最初の実用的な例です。代わりにStAXを使用することをお勧めしますが、SAXはあまり便利ではないことがわかります。

import java.io.File;
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 SAX2 {

    public static void main(String[] args) throws Exception {
        SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
        parser.parse(new File("test.xml"), new DefaultHandler() {

            @Override
            public void startElement(String uri, String localName,
                    String qName, Attributes atts) throws SAXException {
                if (qName.equals("passenger")) {
                    System.out.println("id = " + atts.getValue(0));
                }
            }

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

            @Override
            public void characters(char[] ch, int start, int length)
                    throws SAXException {
                String text = new String(ch, start, length);
                if (!text.trim().isEmpty()) {
                    System.out.println("name " + text);
                }
            }
        });
    }
}

出力

id = 001
name Tom Cruise
id = 002
name Tom Hanks
于 2012-12-11T11:29:24.867 に答える
1
  1. を作成しますDocumentBuilderFactory
  2. DocumentBuilder工場から入手してください。
  3. parse()ビルダーのメソッドの1つを使用して、を作成しDocumentます。
  4. を取得したら、の方法でDocument乗客を取得できElementます。DocumentgetElementsByTagName()

残りはきっと解決できると思います。

于 2012-12-11T10:34:45.287 に答える
0
SAXParserFactory factory = SAXParserFactory.newInstance();
try {

    InputStream    xmlInput  = new FileInputStream("theFile.xml");
    SAXParser      saxParser = factory.newSAXParser();

    DefaultHandler handler   = new SaxHandler();
    saxParser.parse(xmlInput, handler);

} catch (Throwable err) {
    err.printStackTrace ();
}
于 2012-12-11T11:14:38.047 に答える
0
String str = "<?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>";
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
            DocumentBuilder db = dbf.newDocumentBuilder(); 
            InputSource is = new InputSource(new StringReader(str)); 

            final Document document = db.parse(is); 

            System.out.println("node Name " + document.getChildNodes().item(0).getChildNodes().item(1).getNodeName());
于 2012-12-11T11:36:39.583 に答える