【问题标题】:Update Attributes of Child Node XML DOM Java更新子节点 XML DOM Java 的属性
【发布时间】: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();

......

【问题讨论】:

    标签: java xml dom


    【解决方案1】:

    嗯....我想通了。 :) 很简单:

    customerColumnAttr.getNamedItem("function").setTextContent(masterFunction);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      相关资源
      最近更新 更多