亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用一個 RequestBody 在使用 java Spring 的 post 方法中區分 xml

使用一個 RequestBody 在使用 java Spring 的 post 方法中區分 xml

蝴蝶刀刀 2023-06-04 19:46:32
我正在使用 Java Spring 引導編寫 restApplication。我應該在春天寫帖子請求。其中接受數據是text/xml。但是,在 post 方法的參數中出現的 Dto 可以更改類的名稱,例如一次它可能會出現在以下視圖中   <Request1><Head><head>    <id/>    <name/>    <surname/></head></Head></Request1>在同一 url 地址的請求中,它可能會出現在其他視圖中   <Other1><Head><head>   </fio></head></Head></Other1>我如何一次為多個通用 xml 編寫一個 post 方法。這可能在 Java spring 中做到嗎??。我在 pyton 中看到可以只寫分配給變量一些 response.data 就是這樣   @RequestMapping(name = "/a",method = RequestMethod.POST,produces = MediaType.ALL_VALUE)    private ResponseEntity<String> get(@RequestBody String data) throws ParserConfigurationException, IOException, SAXException {        String temp = "";        for(int i = 0 ; i < data.length() ;i ++){            if(Character.isAlphabetic(data.charAt(i))  || Character.isDigit(data.charAt(i)) || data.charAt(i) == '<' || data.charAt(i) == '>' || data.charAt(i) == '/' ){                    temp += data.charAt(i);            }        }        DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();        InputSource src = new InputSource();        src.setCharacterStream(new StringReader(temp));        Document doc = builder.parse(src);        String temp23 = doc.getDocumentURI();        System.out.println(temp23);        String id = doc.getElementsByTagName("id").item(0).getTextContent();        String name = doc.getElementsByTagName("userName").item(0).getTextContent();        //String pink = doc.getElementsByTagName("request").item(0).getTextContent();        System.out.println(id+" "+name+" "+temp23);        return ResponseEntity.ok(data);    }現在我從字符串中得到
查看完整描述

2 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

經過 1 天的搜索,我發現 Response 應該以字符串形式返回,并且在 Document 類的幫助下,我們可以從字符串中解析新的 xml,然后我們可以做我們應該做的事情。Request1 是其他請求中的第一個 xml 數據,它來自 Other1 xml數據沒關系。


 @RequestMapping(name = "/a",method = RequestMethod.POST,produces = MediaType.ALL_VALUE)

private ResponseEntity<String> getIt(@RequestBody String path) throws ParserConfigurationException, IOException, SAXException {

    Document doc = DocumentBuilderFactory.newInstance()

            .newDocumentBuilder()

            .parse(new InputSource(new StringReader(path)));

   if(path.contains("Request1")){

    NodeList tagName = doc.getElementsByTagName("id");

    if(tagName.getLength() > 0){

        System.out.println(tagName.item(0).getTextContent());

    }


   }

   if(path.contains("Other1")){

        NodeList tagName = doc.getElementsByTagName("fio");

        if(tagName.getLength() > 0){

            System.out.println(tagName.item(0).getTextContent());

        }

   }

    return ResponseEntity.ok("SAVED");


}


查看完整回答
反對 回復 2023-06-04
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

好的,當你在響應中有不同的數據時,你想得到不同的結果嗎?如果是,那么請處理控制器內的視圖,您想為該響應顯示哪個視圖。

我希望這會幫助你理解。


查看完整回答
反對 回復 2023-06-04
  • 2 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號