我有下面的xml文件我想用x代码更改xml文件的一些属性。 我们在这里通过java代码
更改了一些属性Xml文件下面包含相关信息。
<Order>
<AllowedModifications>
<Modification ModificationType="CHANGE_CUSTOM_ATTRIBUTES" ThroughOverride="Y"/>
<Modification ModificationType="RECEIVING_NODE" ThroughOverride="Y"/>
<Modification ModificationType="OTHERS" ThroughOverride="Y"/>
</AllowedModifications>
</Order>
如果ModificationType = OTHERS,那么我们必须更改ThroughOverride值= Y.我们如何借助java代码来实现它。
我尝试了下面的代码,但它没有改变。
Element eleAllowedModifications = Util.getChildElement(eleOrderRoot,"AllowedModifications")
System.out.println("First Element "+eleAllowedModifications.getNodeName());
Node staff = xmlFile.getElementsByTagName("Modification").item(0);
NamedNodeMap attr = staff.getAttributes();
for (int i = 0; i < attr.getLength(); i++) {
Node nodeAttr = attr.getNamedItem("ModificationType");
MoficationTYp =String.valueOf(nodeAttr);
Node nodeAttr1= attr.getNamedItem("ThroughOverride");
MoficationTp =String.valueOf(nodeAttr);
}
if (MoficationTYp=="OTHERS") {
for (int i = 0; i < attr.getLength(); i++) {
Node nodeAttr = attr.getNamedItem("ThroughOverride");
MoficationTYp =String.valueOf(nodeAttr);
nodeAttr.setNodeValue("Y");
}
}
此处不会更改ThroughOverride属性的值。
答案 0 :(得分:0)
如果您使用XML library(披露:我与该项目有关联),您可以使用更少的代码获得结果:
public class UpdateOrder {
public interface Order {
@XBUpdate("//Modification[@ModificationType='OTHERS']/@ThroughOverride")
void updateOrder(String value);
}
public static void main(String[] args) throws IOException {
Order order = new XBProjector(Flags.TO_STRING_RENDERS_XML).io().url("res://data.xml").read(Order.class);
order.updateOrder("N");
System.out.println(order.toString());
}
}
此程序打印出来:
<Order>
<AllowedModifications>
<Modification ModificationType="CHANGE_CUSTOM_ATTRIBUTES" ThroughOverride="Y"/>
<Modification ModificationType="RECEIVING_NODE" ThroughOverride="Y"/>
<Modification ModificationType="OTHERS" ThroughOverride="N"/>
</AllowedModifications>
</Order>
答案 1 :(得分:0)
好吧,我评估使用以下代码(例如):
Element eleAllowedModifications = Util.getChildElement(eleOrderRoot,"AllowedModifications");
System.out.println("First Element "+ eleAllowedModifications.getNodeName());
Element staff = (Element)xmlFile.getElementsByTagName("Modification").item(0);
moficationTyp = staff.getAttribute("ModificationType");
//moficationTp = String.valueOf(nodeAttr);
if (moficationTyp.equals("OTHERS")) {
staff.setAttribute("ThroughOverride", "Y");
}
其他评论:
String.valueOf()
在这里似乎不合适。