Xml nicht Parsen von String als Eingabe mit sax

Ich habe eine string Eingabe aus, die ich brauche, um zu extrahieren Sie einfach Informationen, hier ist die Beispiel-xml (aus mkyong):

<?xml version="1.0"?>
<company>
    <staff>
        <firstname>yong</firstname>
        <lastname>mook kim</lastname>
        <nickname>mkyong</nickname>
        <salary>100000</salary>
    </staff>
    <staff>
        <firstname>low</firstname>
        <lastname>yin fong</lastname>
        <nickname>fong fong</nickname>
        <salary>200000</salary>
    </staff>
</company>

Wie ich parse es in meinem code (ich habe ein Feld String name in meiner Klasse) :

public String getNameFromXml(String xml) {
        try {

            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();
            DefaultHandler handler = new DefaultHandler() {

                boolean firstName = false;

                public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {

                    if (qName.equalsIgnoreCase("firstname")) {
                        firstName = true;
                    }
                }

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

                    if (firstName) {
                        name = new String(ch, start, length);
                        System.out.println("First name is : " + name);
                        firstName = false;
                    }

                }

            };

            saxParser.parse(xml.toString(), handler);

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

        return name;
    }

Ich bin immer ein java.io.FileNotFoundException und ich sehe, dass es versucht, eine Datei zu suchen myprojectpath + the entireStringXML

Was mache ich falsch?

Addon :

Hier ist meine main-Methode :

public static void main(String[] args) {
        Text tst = new Text("<?xml version=\"1.0\"?><company>   <staff>     <firstname>yong</firstname>     <lastname>mook kim</lastname>       <nickname>mkyong</nickname>     <salary>100000</salary> </staff>    <staff>     <firstname>low</firstname>      <lastname>yin fong</lastname>       <nickname>fong fong</nickname>      <salary>200000</salary> </staff></company>");
        NameFilter cc = new NameFilter();
        String result = cc.getNameFromXml(tst);
        System.out.println(result);
    }
irgendeinem Grund insbesondere, warum kann man nicht schreiben, der xml-string in eine xml-Datei und parse diese Weise?
K. ja, denn ich Schreibe hive Benutzer-definierte Funktion (cwiki.apache.org/Hive/languagemanual-udf.html). Ich Suche paar Datensätze in nicht-relationale Datenbank, und jeder Datensatz hat ein kleines snipped von xml-gespeichert in einem Datensatz.

InformationsquelleAutor Gandalf StormCrow | 2012-06-25

Schreibe einen Kommentar