目前我在我的项目中处理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 :(得分: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
}
如果您需要将XML文档作为Java对象进行管理,您可能需要查看JAXB tutorial。
答案 1 :(得分: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>