小编jam*_*iss的帖子

什么XPath表达式找到具有给定命名空间声明的元素集?

假设我有一个带有2个带有前缀的名称空间声明的XML文档foo,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:foo="http://www.foo.com">
  <one>
    <!-- children nodes here -->
  </one>
  <two>
    <!-- children nodes here -->
  </two>
  <three xmlns:foo="http://www.foo.com">
    <!-- children nodes here -->
  </three>
</root>
Run Code Online (Sandbox Code Playgroud)

我想评估一个XPath表达式(在Java中),该表达式将返回具有此命名空间声明的元素的NodeList,即rootthree节点.我不是在寻找这个命名空间在范围内的所有节点,而只是寻找具有命名空间声明的节点.

这是我计划使用的Java:

XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
XPathExpression xPathExpression = null;  
NodeList nodeList = null;
boolean theExpressionWasCompiled = true;
xPathExpression = xPath.compile(xPathStatement); // XPath goes here!
nodeList = (NodeList) xPathExpression.evaluate(document, XPathConstants.NODESET);
Run Code Online (Sandbox Code Playgroud)

我应该使用什么的XPath(该值xPathStatementcompile()方法)?

编辑:XPath 1或2确定.

最终编辑:事实证明,XPath不能完全符合我的要求(如果你想要细节,请参阅下面的Dimitre的解释).我能做的最好的事情是多次评估XPath(每个命名空间声明一次),以找到具有命名空间声明的每个元素.我碰巧已经知道每个命名空间的声明次数,因此知道要评估多少次对我来说不是问题.不是超级高效,但确实有效.这是我使用的XPath,它与Dimitre提出的非常类似(见下文):

//*[namespace::*[local-name() = 'foo']] …
Run Code Online (Sandbox Code Playgroud)

java xml xpath xml-namespaces

3
推荐指数
1
解决办法
1195
查看次数

如何在 Java 中更改 Saxon 的标准错误输出流?

我正在使用 Saxon 9 在 Java 中执行 XSL 转换。如果在转换过程中出现错误,Saxon 会将输出定向到运行它的 JVM 的标准错误流。我的 Java 应用程序具有用于标准输出和错误的日志记录机制。如何强制 Saxon 使用我的错误输出流而不是 JVM 默认错误输出流?

java saxon stream

3
推荐指数
1
解决办法
1898
查看次数

HTML递增投票系统

我是html的新手,我试图在我的网页上显示一个值,当按下按钮时,该值会增加.

这是我的代码

<script type ="text/javascript">
     var likesSD = 0;
     var dislikesSD= 0;
</script>
    <button class="like" onclick="likes++">I like!</button>
<script>document.write(likesSD);</script>
Run Code Online (Sandbox Code Playgroud)

按下按钮时,屏幕上的值不会改变.有没有办法在不使用数据库的情况下做到这一点.

html javascript html5 javascript-events

3
推荐指数
1
解决办法
3930
查看次数

酿酒医生展示的这些文库是什么?

Unexpected static libraries:
/usr/local/lib/libappfirewall.a
/usr/local/lib/libautoblock.a
/usr/local/lib/libautosetup.a
/usr/local/lib/libconnectionsclient.a
/usr/local/lib/liblocationawareness.a
/usr/local/lib/libpersonalfirewall.a
/usr/local/lib/libtrustedcomponents.a
Run Code Online (Sandbox Code Playgroud)

当我做了一个brew doctor,我用Google搜索,没有找到任何线索.我的Mac是否受到某种病毒的影响?有谁知道这些libs来自哪里?我可以删除它们吗?

macos homebrew

3
推荐指数
1
解决办法
344
查看次数

检测字符串中的所有大写字母

我在尝试在JavaScript中编写正则表达式时遇到问题,该表达式可以检测到在所有CAPS中键入的至少2个字符的整个单词.

这是我尝试过的,似乎有效.

/\b[^\Wa-z0-9_]+\b/
Run Code Online (Sandbox Code Playgroud)

但是,我会检测用户是否开始输入"我喜欢你"的字符串.

因为,我是大写的,它返回true,因此我想要只检测超过2个字母大小的单词.

javascript regex

2
推荐指数
1
解决办法
2458
查看次数

Java压缩大文件

我正在开发一个适用于一些非常大的文件的应用程序,每个文件大约180mb,其中有3个.我想在我的应用程序中添加一个选项,通过压缩zip或tar等来备份这些文件.什么是最好的选择是尽可能在Java中压缩它们?柏油?压缩?gzip的?

java compression gzip tar

2
推荐指数
1
解决办法
5284
查看次数

autoboxing在java中不起作用

我有以下Java类:

public class HelloWorld{

    public static void main(String []args){

        String s = 23.toString();//compilation error is ';' expected
        s = s + "raju";
        System.out.println(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是根据自动装箱23.toString()必须转换为新的Integer(23).toString()并执行该行.那么为什么我仍然会收到编译错误?

java autoboxing

2
推荐指数
2
解决办法
790
查看次数

越南电子邮件主题编码?

Subject: Re:
 =?UTF-8?Q?Th=E1=BA=A7y_g=E1=BB=ADi_b=C3=A0i_t=E1=BA=ADp_cho_em_v=E1=BB?=
 =?UTF-8?Q?=9Bi.?=
Run Code Online (Sandbox Code Playgroud)

我收到了一封有此主题标题的电子邮件.怎么解码?

c# email mime imaplib

1
推荐指数
2
解决办法
757
查看次数

如何在字符串中的$后删除空格?

我有一个输入,在$和值之间有一个空格,我想删除空格.这段代码:

System.out.println("This costs $ 5 even.".replaceAll("\\$ ", "$"));
Run Code Online (Sandbox Code Playgroud)

应该打印出来:

This costs $5 even.
Run Code Online (Sandbox Code Playgroud)

但它引发了一个例外:

Illegal group reference: group index is missing
java.lang.IllegalArgumentException
    at java.util.regex.Matcher.appendReplacement(Matcher.java:819)
    at java.util.regex.Matcher.replaceAll(Matcher.java:955)
    at java.lang.String.replaceAll(String.java:2223)
    at DollarTest.test(DollarTest.java:18)
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

java regex

0
推荐指数
2
解决办法
620
查看次数