首页 > 编程语言 >javascript操作xml(增删改查)例子代码

javascript操作xml(增删改查)例子代码

时间:2023-06-08 20:34:23浏览次数:71  
标签:xml body function javascript 改查 key findPanel document event



关键字: javascript操作xml(增删改查)

自己做了一个小东西,不是很好,但是对初学来说是一个不错的例子!


包括了

stu.hta( 是HTML应用程序);

stu.xml

注意下面的HTML代码必须保存为后缀名为hta否则当对XML文件进行操作(增删改)的时候就会提示没有权限!!



文件

stu.hta代码如下:


Java代码


    1. <html>  
    2. <head>  
    3. <title> 数据岛的显示 </title>  
    4. <style type="text/css">  
    5. #findPanel  
    6. {  
    7.     position:absolute;  
    8.     width:220px;  
    9.     border:1px solid #666666;  
    10. }  
    11.   
    12. #findPanelTitle  
    13. {  
    14.     height:10px;  
    15.     background-color:#336699;  
    16.     cursor:move;  
    17. }  
    18.   
    19. #findPanelContent  
    20. {  
    21.     padding:5px 5px 5px 5px;  
    22.     background-color:#6699CC;  
    23. }  
    24. </style>  
    25.   
    26. </head>  
    27. <body>  
    28. <SCRIPT LANGUAGE="JavaScript">  
    29. <!--  
    30.   
    31.     var   xmlDoc   =   new   ActiveXObject("Msxml2.DOMDocument");     
    32.     xmlDoc.async   =   false;     
    33.     xmlDoc.resolveExternals   =   false;     
    34.     xmlDoc.load("stu.xml");  
    35.     //alert(xmlDoc.xml);  
    36.     //显示数据  
    37.     function show(){  
    38.         var vbo = document.getElementById("s").value;  
    39.         if(vbo=="显示学生信息"){  
    40.            document.getElementById('info').style.visibility='visible';  
    41.            document.getElementById("s").value="隐藏学生信息";  
    42.          }else{  
    43.             document.getElementById('info').style.visibility='hidden';  
    44.             document.getElementById("s").value="显示学生信息";  
    45.          }  
    46.     }  
    47.     //查找  
    48.     function que(){  
    49.        document.getElementById("ad").style.visibility="visible";  
    50.        document.getElementById("qmd").style.visibility="visible";  
    51.      }  
    52.   
    53.      /** 
    54.       * 解析XML文件函数 
    55.       * @param xmlDoc XML对象 
    56.       * @param name 属性名称 格式如:user.name 
    57.       */  
    58.     function getXMLProperty(xmlDoc, name) {  
    59.      var keys = name.split('.');  
    60.      var node = xmlDoc.documentElement;  
    61.      for(var i=0; i<keys.length; i++) {  
    62.       var childs = node.childNodes;  
    63.       var key = keys[i];  
    64.       for(var k=0; k<childs.length; k++) {  
    65.         var child = childs[k];  
    66.         if(child.nodeName == key) {  
    67.           if(child.childNodes.length == 1) {  
    68.            return child.text;  
    69.            } else {  
    70.             node = child;  
    71.             break;  
    72.            }  
    73.        }  
    74.      }  
    75.    }  
    76.    return "";  
    77.   }  
    78.   //返回父节点(通过节点名字和节点值)  
    79.    function getNod(nam,val){  
    80.       var node = xmlDoc.documentElement;  
    81.       var childs = node.childNodes;     
    82.       for (var i=0;i<childs.length ;i++ )  
    83.       {  
    84.        var child = childs[i];  
    85.        var childms = child.childNodes;  
    86.        for(var k=0;k<childms.length;k++){  
    87.        var childm = childms[k];  
    88.         if(childm.nodeName == nam && (childm.text).substring(0,6)==val){  
    89.          //alert(val);  
    90.          return child;  
    91.         }  
    92.        }  
    93.       }  
    94.       return '';  
    95.    }  
    96.    //通过父节点和子节点名返回子节点值  
    97.    function getNodVal(nods,nam){  
    98.        var childms = nods.childNodes;  
    99.        for(var k=0;k<childms.length;k++){  
    100.        var childm = childms[k];  
    101.         if(childm.nodeName == nam){  
    102.          //alert(childm.text);  
    103.          return childm.text;  
    104.         }  
    105.        }  
    106.         
    107.       return '';  
    108.    }  
    109.    //通过父节点和子节点名返回子节点  
    110.    function getCurNod(nods,nam){  
    111.        var childms = nods.childNodes;  
    112.        for(var k=0;k<childms.length;k++){  
    113.        var childm = childms[k];  
    114.         if(childm.nodeName == nam){  
    115.          //alert(childm.text);  
    116.          return childm;  
    117.         }  
    118.        }  
    119.         
    120.       return '';  
    121.    }  
    122.   
    123.     //开始查找  
    124.     function  query(){  
    125.        var renum = /^\d{5}$/;  
    126.        if(renum.exec(xh.value)){  
    127.        if(xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]")){  
    128.              var nod = getNod('学号',xh.value);  
    129.              //getNodVal(nod,'姓名');  
    130.              //getNodVal(nod,'性别');  
    131.              //getNodVal(nod,'籍贯');  
    132.            /*document.getElementById("xm").value=xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/姓名").text; 
    133.            document.getElementById("xb").value=xmlDoc.selectSingleNode("/ 学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/性别").text; 
    134.            document.getElementById("jg").value=xmlDoc.selectSingleNode("/ 学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/籍贯").text; 
    135.            document.getElementById("xh").disabled="true";   */  
    136.            document.getElementById("xm").value=getNodVal(nod,'姓名');  
    137.            document.getElementById("xb").value= getNodVal(nod,'性别');  
    138.            document.getElementById("jg").value= getNodVal(nod,'籍贯');  
    139.          }else{  
    140.           alert("该学号还没有被占用!");  
    141.          }  
    142.        }else{  
    143.         alert("学号非法!学号5位数字!");  
    144.         return false;  
    145.        }  
    146.     }  
    147.     //修改  
    148.     function mod(){    
    149.         if(info_check()){  
    150.           if(xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]")){  
    151.             if(confirm("确认修改?")){  
    152.               var nod = getNod('学号',xh.value);  
    153.               getCurNod(nod,'姓名').text=xm.value;  
    154.               getCurNod(nod,'性别').text=xb.value;  
    155.               getCurNod(nod,'籍贯').text=jg.value;  
    156.               /* 
    157.               xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/姓名").text=xm.value; 
    158.               xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/性别").text=xb.value; 
    159.               xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/籍贯").text=jg.value; 
    160.               */  
    161.               saveXML();  
    162.               //document.getElementById("xh").disabled="false";  
    163.               document.getElementById("xh").value="";  
    164.               document.getElementById("xm").value="";  
    165.               document.getElementById("xb").value="";  
    166.               document.getElementById("jg").value="";  
    167.               document.getElementById("ad").style.visibility="hidden";  
    168.               document.getElementById("qmd").style.visibility="hidden";  
    169.               alert("修改成功!");  
    170.               location.reload();  
    171.             }  
    172.           }else{  
    173.             alert("该学号还没有被占用!请按学号查询再进行修改!");  
    174.             return false;  
    175.           }  
    176.         }  
    177.     }  
    178.     //新增学生  
    179.     function add(){  
    180.         var  vadd = document.getElementById("add").value;  
    181.         if(vadd=="新增"){  
    182.            document.getElementById("xh").value="";  
    183.            document.getElementById("xm").value="";  
    184.            document.getElementById("xb").value="";  
    185.            document.getElementById("jg").value="";  
    186.            document.getElementById("qmd").style.visibility="hidden";  
    187.            document.getElementById('info').style.visibility='hidden';  
    188.            document.getElementById("s").value="显示学生信息";  
    189.            document.getElementById("ad").style.visibility="visible";  
    190.            document.getElementById("add").value="保存";  
    191.            document.getElementById("can").style.visibility="visible";  
    192.         }else{  
    193.            if(info_check()){  
    194.            add_node();  
    195.            saveXML();  
    196.            document.getElementById("xh").value="";  
    197.            document.getElementById("xm").value="";  
    198.            document.getElementById("xb").value="";  
    199.            document.getElementById("jg").value="";  
    200.            document.getElementById("ad").style.visibility="hidden";  
    201.            document.getElementById("qmd").style.visibility="hidden";  
    202.            document.getElementById("add").value="新增";  
    203.            alert("新增成功!");  
    204.            location.reload();  
    205.            }  
    206.         }  
    207.     }  
    208.       
    209.     //删除学生  
    210.     function del(){  
    211.        var renum = /^\d{5}$/;  
    212.        if(renum.exec(document.getElementById("xh").value)){  
    213.         if(xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]")){  
    214.           if(confirm("确认删除?")){  
    215.             /*var node = xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]"); 
    216.             if(node.hasChildNodes()){              
    217.              var kids = node.childNodes;                
    218.             for(var i=0;i<kids.length;i++){                        
    219.                 del();    
    220.               }    
    221.             } 
    222.              node.parentNode.removeChild(node); 
    223.              */  
    224.               var nod = getNod('学号',xh.value);  
    225.               nod.parentNode.removeChild(nod);  
    226.   
    227.              saveXML();  
    228.              can();  
    229.              alert("删除成功!");  
    230.              location.reload();  
    231.              }  
    232.         }else{  
    233.             alert("该学号还没有被占用!请按学号查询再进行修改!");  
    234.             return false;  
    235.         }  
    236.       }else{  
    237.         alert("学号非法!为5位数字!");  
    238.         return false;  
    239.       }  
    240.     }  
    241.   
    242.   
    243.     //取消新增  
    244.     function can(){  
    245.        document.getElementById("xh").value="";  
    246.        document.getElementById("xm").value="";  
    247.        document.getElementById("xb").value="";  
    248.        document.getElementById("jg").value="";  
    249.        document.getElementById("ad").style.visibility="hidden";  
    250.        document.getElementById("can").style.visibility="hidden";  
    251.        document.getElementById("qmd").style.visibility="hidden";  
    252.        document.getElementById("add").value="新增";  
    253.     }  
    254.     //增加结点  
    255.     function add_node(){  
    256.         var  oxh = xmlDoc.createElement("学号");  
    257.         oxh.appendChild(xmlDoc.createTextNode(xh.value));  
    258.         var  oxm = xmlDoc.createElement("姓名");  
    259.         oxm.appendChild(xmlDoc.createTextNode(xm.value));  
    260.         var  oxb = xmlDoc.createElement("性别");  
    261.         oxb.appendChild(xmlDoc.createTextNode(xb.value));  
    262.         var  ojg = xmlDoc.createElement("籍贯");  
    263.         ojg.appendChild(xmlDoc.createTextNode(jg.value));  
    264.   
    265.         var oxs = xmlDoc.createElement("学生");  
    266.         oxs.appendChild(oxh);  
    267.         oxs.appendChild(oxm);  
    268.         oxs.appendChild(oxb);  
    269.         oxs.appendChild(ojg);  
    270.   
    271.         var parent = xmlDoc.selectSingleNode("/学生管理");  
    272.         if(parent.hasChildNodes())   {     
    273.            parent.insertBefore(oxs,parent.firstChild);     
    274.           }else{     
    275.            parent.appendChild(oxs);     
    276.           }   
    277.     }  
    278.     //保存XML  
    279.     function saveXML(){  
    280.         xmlDoc.save("stu.xml");  
    281.     }  
    282.     //验证新增数据  
    283.     function info_check(){  
    284.       var renum = /^\d{5}$/;  
    285.       var rec = /^[\一-\龥]{2,5}$/;  
    286.       if(!renum.exec(document.getElementById("xh").value)){  
    287.         alert("学号非法!为5位数字!");  
    288.         return false;  
    289.        }  
    290.       if(!rec.exec(xm.value)){  
    291.         alert("姓名非法!只能是中文最少两个字,最多不得超过5个字!");  
    292.         return false;  
    293.       }  
    294.       //alert(xb.value!="男");  
    295.       switch(xb.value){  
    296.        case "男":break;  
    297.        case "女":break;  
    298.        default:alert("性别只能是\"男\"或\"女\"!"); return false;  
    299.       }  
    300.   
    301.   
    302.       if(!rec.exec(jg.value)){  
    303.         alert("籍贯非法!只能是中文最少两个字,最多不得超过5个字!!");  
    304.         return false;  
    305.       }  
    306.       return true;  
    307.     }  
    308.       
    309. //-->  
    310. </SCRIPT>  
    311.   
    312. <input id="s" type=button value="显示学生信息" οnclick="show();">  
    313. <input id="que" type=button value="精确查询" οnclick="que();">  
    314. <input id="add" type=button value="新增" οnclick="add();">  
    315. <input id="can" type=button value="取消" οnclick="can();" style="visibility:hidden">  
    316.   
    317. <br>  
    318. <center>  
    319. <div id="ad" style="visibility:hidden">  
    320.   <table><tr><td>学号:  
    321.   <input type=text id="xh" style="ime-mode:disabled" size=5 maxlength=5 onKeyPress="if ((event.keyCode<48 || event.keyCode>57)) event.returnValue=false"><!-- style 用于光闭输入法 onKeyPress 只能输入数字-->  
    322.   </td><td>姓名:  
    323.   <input type=text id="xm" size=10 maxlength=5>  
    324.   </td><td>性别:  
    325.   <input type=text id="xb" size=5 maxlength=5>  
    326.   </td><td>籍贯:  
    327.   <input type=text id="jg" size=10 maxlength=5>  
    328.   </td>  
    329.   </tr>  
    330.   </table>  
    331. </div>  
    332. <div id="qmd" style="visibility:hidden">  
    333.   <table>  
    334.   <tr align="center">    
    335.   <td></td>  
    336.   <td><input id="que" type=button value="查询" οnclick="query();"></td>  
    337.   <td><input id="mod" type=button value="修改" οnclick="mod();"></td>  
    338.   <td><input id="del" type=button value="删除" οnclick="del();"></td>     
    339.   </tr>  
    340.   </table>  
    341. </div>  
    342. </center>  
    343. <div id="findPanel">  
    344.   <div id="findPanelTitle">可拖动</div>  
    345.   <div id="findPanelContent">  
    346.     <input type="text" size="20" value="a" id="key" οnkeydοwn="javascript:ChckSubmit(event);">  
    347.     <input type="button" value="查找" οnclick="javascript:OnKeySubmit();">  
    348.   </div>  
    349. </div>  
    350. <script language="javascript">  
    351. <!--  
    352. var findPanel = document.getElementById("findPanel");  
    353. var findPanelTitle = document.getElementById("findPanelTitle");  
    354. var findPanelContent = document.getElementById("findPanelContent");  
    355. var findPanel_orgnX = 50;  
    356. var findPanel_orgnY = 50;  
    357.   
    358. //设置物件位置  
    359. findPanel.style.pixelLeft = document.body.scrollLeft + findPanel_orgnX;  
    360. findPanel.style.pixelTop = document.body.scrollTop + findPanel_orgnY;  
    361. //================================================================================  
    362. var foundCnt = 0; //已经找到了的结果的数量  
    363.   
    364. //查找入口函数  
    365. function Find(key)  
    366. {  
    367.     if (key == "")  
    368.     {  
    369.         return;  
    370.     }  
    371.       
    372.     if (document.all)  
    373.     {  
    374.         IEFind(key);  
    375.     }  
    376.     else  
    377.     {  
    378.         NSFind(key);  
    379.     }  
    380. }  
    381.   
    382. //浏览器为 IE 系列  
    383. function IEFind(key)  
    384. {  
    385.     var rng = document.body.createTextRange();  
    386.     var found = false;  
    387.     for (var i=0; i<=foundCnt && (found=rng.findText(key)); i++)  
    388.     {  
    389.         rng.moveStart("character", 1); //找到,后移一位以查找下一个  
    390.     }  
    391.       
    392.     if (found)  
    393.     {  
    394.          rng.moveStart("character", -1);  
    395.          rng.findText(key);  
    396.          rng.select();  
    397.          rng.scrollIntoView();  
    398.          foundCnt++;  
    399.     }  
    400.     else  
    401.     {  
    402.         if (foundCnt > 0)  
    403.         {  
    404.             //已经查找一遍,找到有符合条件的结果,重新开始查找  
    405.             foundCnt = 0;  
    406.             IEFind(key);  
    407.         }  
    408.         else  
    409.         {  
    410.             //已经查找一遍,没有找到符合条件的结果  
    411.             alert("文档搜索完毕。");  
    412.         }  
    413.     }  
    414. }  
    415.   
    416. //浏览器为 NS 系列  
    417. function NSFind(key)  
    418. {  
    419.     if (window.find(key))  
    420.     {  
    421.         foundCnt++;  
    422.     }  
    423.     else  
    424.     {  
    425.         var found = false;  
    426.         while (window.find(key, false, true))  
    427.         {  
    428.             found = true;  
    429.         }  
    430.           
    431.         if (found)  
    432.         {  
    433.             //已经查找一遍,找到有符合条件的结果,重新查找也已经开始  
    434.             foundCnt = 1;  
    435.         }  
    436.         else  
    437.         {  
    438.             //已经查找一遍,没有找到符合条件的结果  
    439.             alert("文档搜索完毕。");  
    440.         }  
    441.     }  
    442. }      
    443.   
    444. function OnKeySubmit()  
    445. {  
    446.     var key = document.getElementById("key");  
    447.     Find(key.value);  
    448. }  
    449.   
    450. function ChckSubmit(e)  
    451. {  
    452.     if (e.keyCode == 13)  
    453.     {  
    454.         OnKeySubmit();  
    455.     }  
    456. }  
    457. //================================================================================  
    458. function RePosFindPanel()  
    459. {  
    460.     findPanel.style.pixelLeft = document.body.scrollLeft + findPanel_orgnX;  
    461.     findPanel.style.pixelTop = document.body.scrollTop + findPanel_orgnY;  
    462. }  
    463.   
    464. document.body.onscroll = RePosFindPanel;  
    465. document.body.onresize = RePosFindPanel;  
    466. //================================================================================  
    467. //拖拽过程中相关变量  
    468. var draging = false; //是否处于拖拽中  
    469. var offsetX = 0;     //X方向左右偏移量  
    470. var offsetY = 0;     //Y方向上下偏移量  
    471.   
    472. //准备拖拽  
    473. function BeforeDrag()  
    474. {  
    475.     if (event.button != 1)  
    476.     {  
    477.         return;  
    478.     }  
    479.     offsetX = document.body.scrollLeft + event.clientX-findPanel.style.pixelLeft;  
    480.     offsetY = document.body.scrollTop + event.clientY-findPanel.style.pixelTop;  
    481.     draging = true;  
    482. }  
    483.   
    484. //拖拽中  
    485. function OnDrag()  
    486. {  
    487.     if(!draging)  
    488.     {  
    489.         return;  
    490.     }  
    491.     //更新位置  
    492.     findPanel_orgnX = event.clientX-offsetX;  
    493.     findPanel_orgnY = event.clientY-offsetY;  
    494.     event.returnValue = false;  
    495.     findPanel.style.pixelLeft = document.body.scrollLeft + event.clientX-offsetX;  
    496.     findPanel.style.pixelTop = document.body.scrollTop + event.clientY-offsetY;  
    497. }  
    498.   
    499. //结束拖拽  
    500. function EndDrag()  
    501. {  
    502.     if (event.button != 1)  
    503.     {  
    504.         return;  
    505.     }  
    506.     draging = false;  
    507. }  
    508.   
    509. findPanelTitle.onmousedown = BeforeDrag;  
    510. document.onmousemove = OnDrag;  
    511. findPanelTitle.onmouseup = EndDrag;  
    512. //-->  
    513. </script>  
    514. <xml id="stu" src="stu.xml">  
    515. </xml>  
    516. <center>  
    517. <div id="info" style="visibility:hidden">  
    518. <table  DATASRC=#stu border=1 style="background-color:#a9eeef; Border-color  
    519. :red;" >  
    520. <caption><h2>学生信息管理</h2></caption>  
    521. <thead>   
    522. <th>学号</th>  
    523. <th>姓名</th>    
    524. <th>性别</th>    
    525. <th>籍贯</th>   
    526. </thead>   
    527. <tr>   
    528. <td>    
    529. <div DATAFLD="学号">    
    530. </td>    
    531. <td>    
    532. <div DATAFLD="姓名">  
    533. </td>    
    534. <td>    
    535. <div DATAFLD="性别">    
    536. </td>    
    537. <td>    
    538. <div DATAFLD="籍贯">   
    539. </td>   
    540. </tr>   
    541. </table>  
    542. </div>  
    543.   
    544.   
    545. </center>  
    546. </body>  
    547. </html>



    xml文件如下(

    stu.xml)




    Java代码

    1. <?xml version="1.0" encoding="gb2312"?>  
    2. <学生管理>  
    3.  <学生>             
    4.  <学号>97001</学号>  
    5.  <姓名>王五</姓名>  
    6.  <性别>男   </性别>  
    7.  <籍贯>上海</籍贯>  
    8.  </学生>  
    9.  <学生>             
    10.  <学号>97002</学号>  
    11.  <姓名>李四 </姓名>  
    12.  <性别>男   </性别>  
    13.  <籍贯>浙江 </籍贯>  
    14.  </学生>  
    15.  <学生>              
    16.   <学号>97006    </学号>  
    17.   <姓名>张三 </姓名>  
    18.   <性别>男</性别>  
    19.   <籍贯>浙江</籍贯>  
    20.  </学生>  
    21. </学生管理>

    标签:xml,body,function,javascript,改查,key,findPanel,document,event
    From: https://blog.51cto.com/u_16065168/6442998

    相关文章

    • javaScript通用数据类型校验_2
      /*要求:一、电话号码由数字、"("、")"和"-"构成二、电话号码为3到8位三、如果电话号码中包含有区号,那么区号为三位或四位四、区号用"("、")"或"-"和其他部分隔开用途:检查输入的电话号码格式是否正确输入:strPhone:字符串返回:如果通过验证返回true,否......
    • Javascript动态修改select选项
      1、向Select里添加OptionJs代码1.//IEonly,FF不支持Add方法2.functionfnAddItem(text,value){3.varselTarget=document.getElementById("selID");4.selTarget.Add(newOption("text","value"));5.}6.......
    • Javascript: setTimeout()使用及 setInterval()使用
      Javascript:setTimeout()使用及setInterval()使用2006-10-1203:36Evaluatesanexpressionafteraspecifiednumberofmillisecondshaselapsed.(在指定时间过后执行指定的表达式) Syntax:iTimerID=window.setTimeout(vCode,iMilliSeconds[,sLanguage])ParametersvCod......
    • 【转载】xsd文件验证xml的java实现
      importjava.io.File;importjava.io.IOException;importjavax.xml.transform.Source;importjavax.xml.transform.stream.StreamSource;importjavax.xml.validation.Schema;importjavax.xml.validation.SchemaFactory;importjavax.xml.validation.Validator;i......
    • 前端进化笔记-JavaScript(三)
      人类在白色的底色上描绘图画,地球在黑色的底色上创造生命。变量、作用域与内存JavaScript的变量可以说是独树一帜。只需要一个(或两个等)关键字(const,let)就可以创建变量,创建时不考虑变量的类型,这是其他语言少有的强大功能。当然强大的功能总是伴随着问题。值原始值:Undefined,Null......
    • Javascript常用正则表达式集合
      1.匹配正整数:/^[0-9]*[1-9][0-9]*$/2.匹配非负整数(正整数+0):/^\d+$/3.匹配中文:/^[\u4e00-\u9fa5]/4.匹配Email:/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/5.匹配网址URL:/^(f|ht){1}(tp|tps):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?/6......
    • springboot 引入jackson-dataformat-xml 接口都返回XML了
      springboot版本2.6.10springboot引入acksonDataformatXML后原本返回json的却返回xml<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>————————————————解......
    • Web.xml 4.0
      Web.xml4.0<?xmlversion="1.0"encoding="UTF-8"?><web-appxmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLoc......
    • python 解析HTML和XML文档
      一、BeautifulSoupBeautifulSoup是一个Python包,用于解析HTML和XML文档。它可以快速而方便地从网页中提取信息,并以易于使用的方式对其进行处理。它支持各种解析器,包括内置的Python解析器和第三方解析器,例如lxml和html5lib。二、对标签提取代码示列以下是使用BeautifulSoup解析H......
    • 深入理解注解驱动配置与XML配置的融合与区别
      摘要:本文旨在深入探讨Spring框架的注解驱动配置与XML配置,揭示两者之间的相似性与差异。本文分享自华为云社区《Spring高手之路2——深入理解注解驱动配置与XML配置的融合与区别》,作者:砖业洋__。本文旨在深入探讨Spring框架的注解驱动配置与XML配置,揭示两者之间的相似性与差异。......