【问题标题】:How to populate element with attribute value using XPath如何使用 XPath 使用属性值填充元素
【发布时间】:2014-05-14 04:46:52
【问题描述】:

当为类别元素中的“基本”属性选择一个值时,我希望该值作为纯文本自动插入到类别元素中。例如,在下面的代码中,我希望两个类别元素分别包含值 Video 和 Alarms。

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

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

谢谢

对于造成的混乱,我深表歉意。这是我的源代码:

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

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

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

所以,我希望元素采用分配给“base”属性的值。 Oxygen 与自定义 XPath 操作捆绑在一起,允许您执行此类操作。例如,通过自定义操作,我可以使用特定的文本字符串自动填充元素。但是,在上面的示例中,我不希望 category 元素采用预定义的字符串值,我希望它自动采用赋予“base”属性的值。但是,如果我不能使用 XPath 转换文档,那么我就走错了!

【问题讨论】:

  • XPath 是用来搜索的,它不能改变文档。
  • 不清楚你在问什么。 XML 是您的输入还是输出的示例?如果您有一个单独的 XML 文件,应该如何引用它?您能否发布(并确定)您的 XML 的外观(输入)和您想要生成的内容(输出)以及任何其他参考文档(以及它们如何关联或应该如何使用的描述)。此外,您可能需要 XSLT 或 XQuery 来转换/修改您的文档。 XPath 无法修改您的文档。
  • 我在原始帖子中添加了更多信息。

标签: xml xpath


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 2014-08-19
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多