如何使用XPath使用属性值填充元素

时间:2014-04-02 17:56:24

标签: xml xpath

为" base"选择一个值时在category元素中的属性,我喜欢这个值自动作为纯文本插入category元素中。例如,在下面的代码中,我希望两个类别元素分别包含值Video和Alarms。

    <metadata>
    <category base="Video"/>
    <category base="Alarms"/>
    </metadata>

什么XPath表达式允许我这样做? base属性的值是在单独的XML文件中预定义的。我使用的是氧气版本15.1。

由于

我为这种困惑道歉。这是我的源代码:

    <metadata>
    <category base="Video"/>
    <category base="Alarms"/>
    </metadata>

通过自定义XPath操作,我希望源代码类似于:

  <metadata>
  <category base="Video">Video</category>
  <category base="Alarms">Alarms</category>
  </metadata>

所以,我希望元素获取分配给&#34; base&#34;的值。属性。 Oxygen捆绑了自定义XPath操作,允许您执行此类操作。例如,通过自定义操作,我可以使用特定的文本字符串自动填充元素。但是,在上面的示例中,我不希望category元素采用预定义的字符串值,我希望它自动将给定的值赋予&#34; base&#34;属性。但是,如果我不能按照惯例使用XPath转换文档,那么我就会咆哮错误的树!

1 个答案:

答案 0 :(得分:0)

您无法使用XPath更改xml文档。您可以使用XPath找到所需的节点值,然后创建具有相同结构的新xml文档(或修改现有的xml文档),其中包含您找到的值。有很多方法可以实现这一点,例如通过大多数编程语言或xml转换(XSLT或XQuery查询)。

您可以在互联网上找到大量示例,您可以在其中找到如何使用XPath查找您感兴趣的节点,然后在f.e中修改它们。 Java(找到here):

myNodeList = (NodeList) xpath.compile("//MyXPath/text()")
       .evaluate(myXmlDoc, XPathConstants.NODESET);
myNodeList.item(0).setNodeValue("Hi mom!");