2017-02-17 8 views
0

は私のXMLです:Javaの別の要素に基づいてXML要素の値を変更するにはどうすればよいですか?私は、以下のソースコードからXML要素を変更したい現在私はそのために私のプロジェクトでタスクを変更するXMLに取り組んでいます

<Client_list> 
     <Description> 
      <ip>192.168.11.206</ip> 
      <name>vishal suhagiya</name> 
     </Description> 
     <Description> 
      <ip>192.168.11.205</ip> 
      <name>kinnari jasoliya</name> 
     </Description> 
</Client_list> 

私は次のようにJavaで書いた:

for (int i = 0; i < nodes.getLength(); i++) { 
    Element Description = (Element)nodes.item(i); 
        Node element = nodes.item(i); 


    Element ip = (Element)Description.getElementsByTagName("ip_address").item(0); 
    String pName = ip.getTextContent(); 

    String Client = jTextField4.getText(); 

    if (pName.equals(Client)) { 

     if("Name".equals(element.getNodeName())) 
     { 
      element.setTextContent(jTextField4.getText()); 
     } 

    } 

192.168.11.205の名前を変更したい場合、どうすれば変更できますか? IPアドレスに基づいてXMLの名前を変更するには

答えて

0

私はこの種のアップデートを管理するためにxpathを使用しています。

XPath xpath = XPathFactory.newInstance().newXPath(); 

    try { 
     NodeList nodes = (NodeList) xpath.evaluate("//Description[ip='192.168.11.205']/name", doc, XPathConstants.NODESET); 
     for(int i=0;i<nodes.getLength();i++){ 
      Element nameElement = (Element) nodes.item(i); 
      nameElement.setTextContent("NewValue"); 
     } 
    } catch (XPathExpressionException e) { 
     // Some error management here 
    } 

あなたはJavaオブジェクトとしてXML文書を管理する必要がある場合は、JAXB tutorialを見てしたいことがあります。

+0

ありがとうの@minusが、それは –

+0

奇妙な作業していない、実際に私は(あなたがあなたの質問に入れXML断片と)テストを行なったし、それが私のために働きました。 xmlソースは名前空間を使用しますか?もしそうなら、XPathは少し書くのが難しいかもしれません。 – minus

0

XSLTですべてを行います。

<xsl:transform version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:param name="ip"/> 
    <xsl:param name="newName"/> 

    <xsl:template match="*"> 
    <xsl:copy><xsl:apply-templates/></xsl:copy> 
    </xsl:template> 

    <xsl:template match="name[../ip=$ip]"> 
    <name><xsl:value-of select="$newName"/></name> 
    </xsl:template> 
</xsl:transform> 
関連する問題