【问题标题】:error with XML parsingXML解析错误
【发布时间】:2011-07-12 12:20:11
【问题描述】:

为了解析一个 XML 字符串,我在谷歌上搜索并找到了 an example on how to do that,但它对我不起作用!

当我声明 NodeList 时出现以下错误:required:groovy.util.NodeList, found org.w3c.dom.NodeList

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
      System.out.println("*********test2*********");
 InputSource is = new InputSource(new StringReader(var2)); 
 Document parse = builder.parse(is);
 NodeList nodes = parse.getElementsByTagName("step");

 for (int i = 0; i < nodes.getLength(); i++)
{
   Element element = (Element) nodes.item(i);

       NodeList name = element.getElementsByTagName("step");
       Element line = (Element) name.item(0);
       System.out.println("Name: " + getCharacterDataFromElement(line));
                System.out.println("______test3_____");
 }

更新: 我已经使用此代码更改了代码,但出现了另一个错误,我认为它与我的 xml 字符串的结构有关:

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
        .newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory
        .newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(var2));
Document document = documentBuilder.parse(is);

NodeList nl = document.getElementsByTagName("step");
Element el = (Element) nl.item(0);
Text elText = (Text) el.getChunks();
String theValue = elText.getNodeValue();
System.out.println("value"+theValue);

错误:

java.net.UnknownHostException: www.opensymphony.com
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)
at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at DAOKPI.Main.main(Main.java:99)

【问题讨论】:

    标签: java xml parsing


    【解决方案1】:

    您导入了错误的类:您似乎导入了groovy.util.NodeList,但需要org.w3c.dom.NodeList

    将源文件顶部的import groovy.util.NodeList; 替换为import org.w3c.dom.NodeList;

    【讨论】:

    • 已经这样做了,但是错误:找不到符号:方法 getElementsByTagName(java.lang.String)!
    • 我已经用另一个代码更新了我的帖子,但它们总是错误:(
    • @rym:您的 XML 解析器正在尝试加载 DTD 以解析实体,但无法解析提到的主机。确保该主机可解析(即可访问)提供您自己的 EntityResolver 来解析相关实体。
    • @ Joachim Sauer,你好,EntityResolver 是什么,我不知道!其实我不知道为什么这个节点 ttp://www.opensymphony.com/osworkflow/workflow_2_8.dtd" rel="nofollow" target="_blank">opensymphony.com/osworkflow/workflow_2_8.dtd"> 会惹麻烦!!
    • @rym: 提示:使用你最喜欢的搜索引擎和“EntityResolver”这个词,你会得到启发!
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多