Java 用撇号解析XML

Java 用撇号解析XML,java,xml,Java,Xml,以BBC新闻RSS提要为例,其中一条新闻如下: <item><title>Pupils 'bullied on sports field'</title><description>bla bla.. 完全相同的代码用于解析其他元素,如description和pubDate等,这些元素都很好 这是getCharacterDataFromElement方法: public static String getCharacterDataFromEleme

以BBC新闻RSS提要为例,其中一条新闻如下:

<item><title>Pupils 'bullied on sports field'</title><description>bla bla..
完全相同的代码用于解析其他元素,如description和pubDate等,这些元素都很好

这是getCharacterDataFromElement方法:

public static String getCharacterDataFromElement(Element e) {
    Node child = ((Node) e).getFirstChild();
    if (child instanceof CharacterData) {
        CharacterData cd = (CharacterData) child;
        return cd.getData();
    }
    return "";
}

我做错了什么?我使用DocumentBuilder、DocumentBuilderFactory和org.w3c.dom来处理RSS提要。

您的getCharacterDataFromElement只查看第一个子元素-查看是否还有其他子元素,并将所有文本固定在一起


HTH-DF

好吧,好吧,撇号是XML中的保留字符,因此应该编码为
&apos

这意味着BBC新闻RSS提要没有提供格式良好的XML


最好是向BBC新闻RSS源提供商发布错误报告,以便他们修复它。

正如davidfrancis建议的那样,您应该迭代
getCharacterDataFromElement()中的所有子项。

或者,如果可以使用DOM级别3,则可以使用实现所需功能的方法

NodeList title = element.getElementsByTagName("title");
Element line = (Element)title.item(0);
tmp.setTitle(line.getTextContent());
NodeList title = element.getElementsByTagName("title");
Element line = (Element)title.item(0);
tmp.setTitle(line.getTextContent());