0

私のXMLは次のようなものです

<?xml version="1.0" encoding="UTF-8"?>
<Students>
<![CDATA[<?xml version="1.0" encoding="UTF-8"?> <Student><rno>1</rno><name>xyz</name>     </student>]]>
</Students>

XSLの助けを借りて、cdataセクション内に存在するrnoの値を取得したいと思います。この値の読み方

4

1 に答える 1

0

まず、xmlで。に置き換える必要があり</student>ます</Student>。XMLタグは大文字と小文字を区別するため、ここでは参照します

自分でそれを行う秘訣は次のとおりです。

public static String getRNO(){

    String valueRetrieved = null;

    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = null;
    Document doc = null;

    try {
        db = dbf.newDocumentBuilder();
        doc = db.parse(new File("D:\\Loic_Workspace\\Test2\\res\\test.xml"));
        NodeList ndList = doc.getElementsByTagName("Students");
        String xmlRetrieved = ndList.item(0).getTextContent();

        if(xmlRetrieved != null) {
            //CALL OF STRING REPLACE METHOD TO PREVENT FROM
            //at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
            //at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source
            xmlRetrieved = xmlRetrieved.replace("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", "");

            doc = db.parse(new InputSource(new StringReader(xmlRetrieved)));
            valueRetrieved = doc.getElementsByTagName("rno").item(0).getTextContent();
        }


    } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    return valueRetrieved;

}

それが役に立てば幸い ;-)

于 2013-02-03T20:41:46.283 に答える