Xpath:选择文本和子节点

时间:2018-05-09 10:33:46

标签: java xml xpath sax xpath-2.0

拥有XML

 public void connect(String host, int port) throws IOException {
    if (connected) {
        throw new IOException("Already connected.");
    }

    clientSocket = new Socket(host, port);
    outStream = clientSocket.getOutputStream();
    outputStream = new ObjectOutputStream(outStream);
    inStream = clientSocket.getInputStream();
    inputStream = new ObjectInputStream(inStream);
    connected=true;
    System.out.println("Connected to "+host+" over port "+ port);
}

如何在<node>Text1<subnode/>text2</node> 标记内选择整个子字符串?

这样的事情:

<node>

将xpath写为:Text1<subnode/>text2 返回null。

1 个答案:

答案 0 :(得分:0)

./node/node()返回三个节点的序列:

  • 一个文本节点,其字符串值为&#34; Text1&#34;

  • 名称为&#34;子节点&#34;

  • 的元素节点
  • 一个文本节点,其字符串值为&#34; text2&#34;

如果您想要字符串"Text1<subnode/>text2",则需要序列化元素节点。 XPath无法看到原始的词法XML,只能看到一个节点树,所以如果你需要词汇XML,那么你必须重构它:这个过程称为序列化。要从XPath中进行序列化,您需要XPath 3.0,它具有serialize()函数,可将节点树转换为字符串。