【问题标题】:Java SPLIT with colon : and xml带有冒号的 Java SPLIT : 和 xml
【发布时间】:2016-05-02 08:25:42
【问题描述】:

我必须使用 : 拆分键值,但问题是该值是 XML。

("User1":"<?xml version=\"1.0\"?><presence xmlns=\"urn:ietf:params:xml:ns:pidf\" xmlns:dm=\"urn:ietf:params:xml:ns:pidf:data-model\" xmlns:rpid=\"urn:ietf:params:xml:ns:pidf:rpid\" xmlns:c=\"urn:ietf:params:xml:ns:pidf:cipid\" entity=\"ivaxer@tipmeet.com\"></presence>")

我想要的是一个以 User1 为键、以 XML 为值的地图。

我尝试了input.split(":");,但这不起作用,因为它拆分了 xml 命名空间中的所有内容。我试过input.split("\\\":\""); 这没有任何作用。

也许一些正则表达式可以提供帮助,但我不知道它到底是什么。

【问题讨论】:

标签: java xml split tokenize


【解决方案1】:

如果您的密钥不包含冒号,您可以尝试以下操作:

    public static void main(String[] args) {
    final String str = "\"User1\":\"<?xml version=\"1.0\"?><presence xmlns=\"urn:ietf:params:xml:ns:pidf\" xmlns:dm=\"urn:ietf:params:xml:ns:pidf:data-model\" xmlns:rpid=\"urn:ietf:params:xml:ns:pidf:rpid\" xmlns:c=\"urn:ietf:params:xml:ns:pidf:cipid\" entity=\"ivaxer@tipmeet.com\"></presence>";
    final int firstIndexOfColon = str.indexOf(':');
    if(firstIndexOfColon >= 0) {
        final String key = str.substring(0, firstIndexOfColon);
        final String val = ((firstIndexOfColon + 1) < str.length()) ? str.substring(1 + firstIndexOfColon) : "Empty value string";
        System.out.println(key);
        System.out.println(val);
    } else {
        System.out.println("No delimiter found");
    }
}

否则,您必须更精确地指定语法,以便准备正则表达式。

【讨论】:

  • 太棒了。简单的解决方案。
猜你喜欢
  • 2010-12-20
  • 2013-05-31
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多