java แปลงสตริงเป็น xml และแยกโหนด [ซ้ำกัน]

สวัสดี ฉันได้รับสตริงกลับจากบริการเว็บ

ฉันต้องแยกวิเคราะห์สตริงนี้และได้รับข้อความเป็นข้อความแสดงข้อผิดพลาดหรือไม่

สตริงของฉันมีลักษณะเช่นนี้:

<response>
<returnCode>-2</returnCode>
<error>
<errorCode>100</errorCode>
<errorMessage>ERROR HERE!!!</errorMessage>
</error>
</response>

จะดีกว่าไหมที่จะแยกวิเคราะห์สตริงหรือแปลงเป็น xml แล้วแยกวิเคราะห์?


person Doc Holiday    schedule 29.10.2013    source แหล่งที่มา


คำตอบ (3)


ฉันจะใช้ไลบรารีเอกสาร XML ของ Java มันยุ่งนิดหน่อยแต่ได้ผล

String xml = "<response>\n" +
             "<returnCode>-2</returnCode>\n" +
             "<error>\n" +
             "<errorCode>100</errorCode>\n" +
             "<errorMessage>ERROR HERE!!!</errorMessage>\n" +
             "</error>\n" +
             "</response>";
Document doc = DocumentBuilderFactory.newInstance()
                                     .newDocumentBuilder()
                                     .parse(new InputSource(new StringReader(xml)));

NodeList errNodes = doc.getElementsByTagName("error");
if (errNodes.getLength() > 0) {
    Element err = (Element)errNodes.item(0);
    System.out.println(err.getElementsByTagName("errorMessage")
                          .item(0)
                          .getTextContent());
} else { 
        // success
}
person azz    schedule 29.10.2013
comment
สิ่งนี้ได้ผลสำหรับฉัน !! ... ขอบคุณ - person Doc Holiday; 29.10.2013
comment
มันใช้ได้ผลสำหรับฉันเช่นกัน ขอบคุณ - person mavi; 15.12.2016

ฉันอาจจะใช้ตัวแยกวิเคราะห์ XML เพื่อแปลงเป็น XML โดยใช้ DOM จากนั้นรับข้อความ สิ่งนี้มีข้อดีคือมีความเข้มแข็งและรับมือกับสถานการณ์ที่ไม่ปกติ เช่น บรรทัดลักษณะนี้ ซึ่งมีการแสดงความคิดเห็นบางอย่าง:

<!-- commented out <errorMessage>ERROR HERE!!!</errorMessage> -->

หากคุณลองแยกวิเคราะห์ด้วยตัวเองคุณอาจทำผิดสิ่งนี้ นอกจากนี้ ยังมีข้อดีคือหากข้อกำหนดขยายออกไป การเปลี่ยนโค้ดของคุณก็เป็นเรื่องง่ายมาก

http://docs.oracle.com/cd/B28359_01/appdev.111/b28394/adx_j_parser.htm

person Paul Richards    schedule 29.10.2013

มันเป็นเอกสาร XML ใช้ตัวแยกวิเคราะห์ XML

คุณ สามารถ แยกมันออกจากกันโดยใช้การดำเนินการสตริง แต่คุณต้องกังวลเกี่ยวกับการถอดรหัสเอนทิตี การเข้ารหัสอักขระ ส่วน CDATA ฯลฯ ตัวแยกวิเคราะห์ XML จะทำทั้งหมดนี้ให้คุณ

ลองดู JDOM เพื่อดูวิธีแยกวิเคราะห์ XML ที่ง่ายกว่าการใช้ DOM/SAX แบบ Raw

person Brian Agnew    schedule 29.10.2013