我需要将xpath节点搜索限制为子树.我目前正在使用下面的方法,但它会在整个文档中搜索我是否给它提供文档或我要搜索的节点.
private NodeList findNodes(Object obj,String xPathString) throws ... {
XPath xPath = XPathFactory.newInstance().newXPath();
XPathExpression expression = xPath.compile(xPathString);
return (NodeList) expression.evaluate(obj, XPathConstants.NODESET);
}
Run Code Online (Sandbox Code Playgroud)
我现在使用的解决方案是创建新文档,附加节点并搜索新文档,然后合并.我想改进这个.可以吗?
我正在使用的XPath是//nodeName.
我将决定是使用Apache Click还是Apache Tapestry 5框架.我应该选择哪一个?我正在寻找一个可以用来构建未来几年Java EE Web应用程序的框架.接下来的几天我将测试他们运行样本和自定义项目,但我想提前知道其中一个是不稳定还是大到足以支持大规模企业应用程序.我需要它与Maven,各种AJAX和Eclipse一起工作没有任何困难.
提前谢谢,StackOverflow社区:)
我想用另一个节点替换XML文档中的节点,结果用其他内容替换它的所有子节点.以下代码应该可行,但由于未知原因,它不会.
File xmlFile = new File("c:\\file.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
NodeList nodes = doc.getElementsByTagName("NodeToReplace");
for (int i = 0; i < nodes.getLength(); i++) {
NodeList children = nodes.item(i).getChildNodes();
for (int j = 0; j < children.getLength(); j++) {
nodes.item(i).removeChild(children.item(j));
}
doc.renameNode(nodes.item(i), null, "MyCustomTag");
}
Run Code Online (Sandbox Code Playgroud)
编辑-
经过一段时间的调试后,我解决了它.问题在于移动子阵列elmts的索引.这是代码:
NodeList nodes = doc.getElementsByTagName("NodeToReplace");
for (int i = 0; i < nodes.getLength(); i++) {
NodeList children = nodes.item(i).getChildNodes();
int len = children.getLength();
for (int j …Run Code Online (Sandbox Code Playgroud) 如果构造,我可以简化这个java吗?对我来说似乎太冗长了,我想让它更短.
A是持久性Object,如果第一次访问它的上下文,它将为null.比A是instatniated和给定内容,如果失败,一些备份内容给A.
if (A == null) {
A = staticGetMethod();
if (A == null) A = new BackupAContent() { ... };
}
Run Code Online (Sandbox Code Playgroud) 我想将java内部类导入Scala项目.不编译的代码如下所示:
import pac.Obj
import pac.Obj.Inner.Inner2
object Sample {
def main(args: Array[String]): Unit = {
var o = new Obj()
Inner2 i2 = o.getInner().addInner2("some text")
}
}
Run Code Online (Sandbox Code Playgroud)
scala编译器无法识别第二次导入.这是为什么?在Java中,此构造工作正常.