Я использую jxpath для печати всех узлов и добавления дочернего узла в тег функции в этом xml.
<extracts>
<extract>
<id>1</id>
<features>
<feature>1</feature>
<feature>2</feature>
</extract>
</extracts>
Вот как выглядит мой код (по крайней мере, та часть, которая работает — печатает некоторую информацию):
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);
Первая часть моего требования — распечатать эти узлы — тривиальна:
for (Iterator iter2 = jxpathCtx.iterate("/extract/*"); iter2.hasNext();)
{
System.out.println("\n Value is : " + iter2.next().toString() +"\n");
}
Вторая часть моего требования - это то, что мне нужно
Мне нужно добавить новую запись -- новый узел ‹ feature >3‹ /feature > ПОД существующим тегом <features>
под < extract >
программно
Это может быть что-то вроде изоляции этого узла, а затем добавления к нему дочернего элемента - я просто не знаю, как это сделать:
org.apache.commons.configuration.HierarchicalConfiguration.NodeNode node = (Node)jxpathCtx.selectNodes("/extract/lastruns/lastrun");
for (Element node : nodes)
{
}
Любые идеи/помощь будут оценены