【发布时间】:2017-05-21 15:39:41
【问题描述】:
我试图弄清楚如何更新 XML 结构深处的 XML 节点的多个属性。我正在使用带有 XML DOM 类的 Java。考虑以下 XML 结构:
<foo>
<books>
<book id="ABC" source="blah">
<page id="01" language="english" value="fun"/>
<page id="02" language="english" value="stuff"/>
<page id="03" language="english" value="ant"/>
</book>
<book id="123" source="blah33">
<page id="01" language="english" value="stuff"/>
<page id="02" language="english" value="fun"/>
<page id="03" language="english" value="yo"/>
</book>
.......
</books>
</foo>
所以我在 Book ABC 下的页面 Id 02 上,我想将 value 更新为一组新的文本。问题是我正在遍历一个 master 书籍列表并相应地更新这个单独的 XML DOM。所以此时,我有一个子节点对象,它没有设置属性值的方法。它只有setNodeValue() 方法可用。
我在这里缺少什么?有问题的 XML 结构要大得多且复杂一些,但上面的示例说明了子关系以及我需要更新的位置。
帮助!提前致谢
.....
String masterColumnName = masterColumnNode.getAttributes().getNamedItem("name").getNodeValue();
for (int j = 0; j < customerColumnList.getLength(); j++){
Node customerColumnNode = customerColumnList.item(j);
String customerColumnName = customerColumnNode.getAttributes().getNamedItem("name").getNodeValue();
// Check for Match
if (masterColumnName.equals(customerColumnName)){
// Get Master & Customer Attributes
NamedNodeMap masterColumnAttr = masterColumnNode.getAttributes();
NamedNodeMap customerColumnAttr = customerColumnNode.getAttributes();
customerColumnNode.<NO WAY TO DO> = masterColumnAttr.getNamedItem("function").getNodeValue();
......
【问题讨论】: