【问题标题】:Extracting elements from CDATA从 CDATA 中提取元素
【发布时间】:2013-05-17 12:21:59
【问题描述】:

我有这个 XML 文件:

<description>
  <![CDATA[
    <tag1 hello world/><br/> 
    <b>Current Conditions:</b>
  ]]>
</description>

我需要提取tag1brb。这是我的代码:

NodeList nl = eElement.getElementsByTagName("description");

for (int j = 0; j < nl.getLength(); j++) {
    Node n = nl.item(j);
    Element e = (Element)n;
    String s = getElement(e));
}


public static String getElement(Element e) {
    NodeList list = e.getChildNodes();
    String data;

    for(int index = 0; index < list.getLength(); index++){
        if(list.item(index) instanceof CharacterData){
            CharacterData child = (CharacterData) list.item(index);
            data = child.getData();

            if(data != null && data.trim().length() > 0)
                return child.getData();
        }
    }
    return "";
}

输出是:

<tag1 hello world/><br/> 
<b>Current Conditions:</b> 

但我需要一个 String [] str 并具有以下值:

 str[0] = "hello world";
 str[1] = ""; 
 str[3] = "Current Condition:";

【问题讨论】:

  • 也许您会对 JAXB 感兴趣。它允许您将 xml 绑定到标准 Java 类。这样您就不必自己进行任何 xml 解析,并且适应 xml 架构中的变化会更快。

标签: java xml cdata


【解决方案1】:

CDATA 块的目的是将内容保存为未解析的字符数据(这就是您所看到的)。一旦你有了String,你就可以解析它来访问它的数据。

【讨论】:

  • 那么你是说我应该使用regex 来分割字符串吗?
  • @Sam - 由于&lt;tag1 hello world/&gt; 不是有效的XML,您需要使用正则表达式从String 中提取信息。
猜你喜欢
  • 1970-01-01
  • 2014-06-03
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多