带有DOM包的XML Scrap JAVA“实体错误”

时间:2017-05-12 06:12:08

标签: java xml parsing dom saxparser

我正在使用带有DOM包的JAVA在XML中抓取数据。我能够检索所需的信息,但在XML中存在任何& nbsp 标记时出现问题。

这是我的 feed.xml 文件:

<inventory>
    <item UnitID="1234" Record="0">
        <id>1234</id>
        <dealerid>455</dealerid>
        <stock_number>1600Xtreme</stock_number>

        <details>This is some additional details &nbsp about the 
        product</details>

        <make>Nvidia</make>                       
    </item>
    <item UnitID="7854" Record="1">
        <id>7854</id>
        <dealerid>587</dealerid>
        <stock_number>12TMAX5500</stock_number>

        <details>This is some additional details &nbsp about the 
        product</details>

        <make>Realtek</make> 
    </item>
</inventory>

正如您在feed.xml中看到的,详细信息标记包含&amp; nbsp,每当我运行JAVA时,它都会显示错误。

但是,如果删除该行,一切正常。删除它不是一种选择,因为我不允许在现实生活中编辑xml。

这是我的JAVA代码:

File fXmlFile=new File("feed.xml");
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
Document doc=dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList nList=doc.getElementsByTagName("item");
for (int temp=0; temp < nList.getLength(); temp++)
{
    Node nNode=nList.item(temp);
    Element eElement2 = (Element)nNode;
    String search="Nvidia";
if (eElement2.getElementsByTagName("make").item(0).
getTextContent().equals(search))
    {
        System.out.println("The condition on the IF is True");
    }
}

这是我在运行时遇到的错误:

  

[致命错误] feed.xml:150:504:引用了实体“nbsp”,但未声明。   org.xml.sax.SAXParseException; systemId:file:/ C:/src/Test1/feedForTests.xml; lineNumber:150; columnNumber:504;实体“nbsp”已被引用,但未声明。       在com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)       at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)       在javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:205)       在Test1.ReadXMLFile2.main(ReadXMLFile2.java:58)

只需从详细信息标记中删除&amp; nbsp,问题就会消失。

我已经用我的代码达到了这一点,但却陷入了困境,无法找到解决方案。感谢您的帮助。

0 个答案:

没有答案