2017-06-20 57 views
0

我在下面有XML参数;正如你所看到的,这是两个“网关”节点。第一个接口是Internal,第二个接口是Uplink。如何在HTML中使用XML附加子节点DOM

我要添加新的IpRangeStartAddressEndAddress子节点。但首先我需要找到具有上行链路接口的Gateway节点,并在此添加IpRange参数。像x.x.x.x.

我是XML新手,我使用JavaScript和HTML DOM。

<Gateways> 
      <Gateway> 
       <Interface>internal</Interface> 
       <Subnet> 
        <Gateway>1.1.1.2</Gateway> 
        <Netmask>255.255.255.0</Netmask> 
        <IpAddress>1.1.1.1</IpAddress> 
       </Subnet>    
      </Gateway>   
      <Gateway> 
       <Interface>uplink</Interface> 
       <Subnet> 
        <Gateway>2.2.2.2</Gateway> 
        <Netmask>255.255.255.0</Netmask> 
        <IpAddress>2.2.2.1</IpAddress> 
        <IpRanges> 
         <IpRange> 
          <StartAddress>x.x.x.x</StartAddress> 
          <EndAddress>x.x.x.x</EndAddress> 
         </IpRange> 
          <IpRange> 
          <StartAddress>x.x.x.x</StartAddress> 
          <EndAddress>x.x.x.x</EndAddress> 
         </IpRange> 
        </IpRanges> 
       </Subnet> 
      </Gateway> 
</Gateways> 

回答

0

尝试用这种JS代码通过XML DOM功能狂:

var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) { 
     readXML(this); 
    } 
    }; 
    xhttp.open("GET", "yourFile.xml", true); 
    xhttp.send(); 

    function readXML(xml) { 
    var newElement, xmlDoc; 
    //New xmlDoc 
    xmlDoc = xml.responseXML; 
    //Looking for the right interface node 
    var InterfaceNode = xmlDoc.getElementsByTagName("Interface").nodeValue; 
    for (let i = 0; i < xmlDoc.getElementsByTagName("Interface").length; i++) { 
     //The one with value = 'uplink' 
     if (xmlDoc.getElementsByTagName("Interface")[i].nodeValue == 'uplink') { 
     var IpRangesNode = xmlDoc.getElementsByTagName("IpRanges")[i]; 
     //Creating the new node IpRange 
     newElement = xmlDoc.createElement("IpRange"); 
     //Adding 2 new nodes StartAddress and EndAddress both with x.x.x.x as value 
     var newStartAddress = newElement.createElement("StartAddress"); 
     newStartAddress.nodeValue = "x.x.x.x"; 
     var newEndAddress = newElement.createElement("EndAddress"); 
     newEndAddress.nodeValue = "x.x.x.x"; 
     //Appending to the initial Node 
     IpRangesNode.appendChild(newElement); 
     } 
    } 
    } 

希望这可以帮助, 劳拉。

+0

嗨劳拉,谢谢你的努力。我得到这样的错误; ReferenceError:“XMLHttpRequest”未定义。我正在使用vmware软件进行开发,我认为不支持XMLHttpRequest库。我只有安装我们的软件的XMLManager插件:(((https://pubs.vmware.com/vsphere-50/index.jsp#com.vmware.vsphere.vco_use_plugins.doc_42/GUID-C8E14800-34B2-44D6-A500- 4751855C34B8.html – Legioon

+0

不幸的是,我不知道vmware软件 我的技术解决方案是为JavaScript(纯粹)设计的,但正如我所看到的,它与您使用的框架没有兼容性 我唯一的建议是关闭这个话题,重新说明你的问题**指定**,你需要**为vmware **工作,并让社区帮助你:) –

+0

嗨劳拉,感谢您的评论:) – Legioon