首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用JXPATH添加节点

使用JXPATH添加节点
EN

Stack Overflow用户
提问于 2012-06-13 06:16:10
回答 1查看 287关注 0票数 1

我使用jxpath打印所有节点,并将子节点添加到此xml中的特性标记中。

代码语言:javascript
复制
<extracts>
<extract>
<id>1</id>
<features>
<feature>1</feature>
<feature>2</feature>
</extract>
</extracts>

这就是我的代码(至少可以打印一些信息的部分):

代码语言:javascript
复制
    import org.apache.commons.jxpath.ri.model.*;
    import org.apache.commons.jxpath.JXPathContext;
    import org.apache.commons.jxpath.Pointer;


try {
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
ByteArrayInputStream bais = new ByteArrayInputStream(getBytesFromFile(file));
Document doc = builder.parse(bais);

JXPathContext jxpathCtx = JXPathContext.newContext(doc.getDocumentElement());
jxpathCtx.setLenient(true);

我要求的第一部分--即打印这些节点--非常简单:

代码语言:javascript
复制
for (Iterator iter2 = jxpathCtx.iterate("/extract/*"); iter2.hasNext();) 
{
    System.out.println("\n Value is : " + iter2.next().toString() +"\n");

}

我要求的第二部分是我得到的东西。

我需要添加一个新条目--一个新的<features> < extract >下的 < Feature>3< /feature > 节点

它可能类似于隔离那个节点--然后给它添加一个子节点--我只是不知道该如何去做:

代码语言:javascript
复制
org.apache.commons.configuration.HierarchicalConfiguration.NodeNode node = (Node)jxpathCtx.selectNodes("/extract/lastruns/lastrun");

for (Element node : nodes)
{

}

如有任何意见/帮助,将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-13 14:28:20

此XSLT转换

代码语言:javascript
复制
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*" name="identity">
  <xsl:copy>
   <xsl:apply-templates select="node()|@*"/>
  </xsl:copy>
 </xsl:template>

 <xsl:template match="feature[last()]">
  <xsl:call-template name="identity"/>
    <feature>3</feature>
 </xsl:template>
</xsl:stylesheet>

应用于所提供的XML文档(更正为格式良好):

代码语言:javascript
复制
<extracts>
    <extract>
        <id>1</id>
        <features>
            <feature>1</feature>
            <feature>2</feature>
        </features>
    </extract>
</extracts>

生成想要的、正确的结果

代码语言:javascript
复制
<extracts>
   <extract>
      <id>1</id>
      <features>
         <feature>1</feature>
         <feature>2</feature>
         <feature>3</feature>
      </features>
   </extract>
</extracts>

解释

正确使用和重写身份规则

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11009195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档