Tag: xmlreader

读取mybatis xml文件时会出现“java.net.UnknownHostException”

我喜欢通过java代码从mybatis xml文件中读取数据。 (不是mybatis映射,只是想从应用程序外部读取数据。) SELECT id,name,standard,age,sex FROM user; 所以我尝试使用xml阅读器如下: File fXmlFile = new File(“c:\\mybatis.xml”); DocumentBuilderFactory dbFactory = DocumentBuilderFactory .newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(fXmlFile); doc.getDocumentElement().normalize(); NodeList nList = doc.getElementsByTagName(“mapper”); . . . 但是,当我运行此代码时,我得到了以下错误 java.net.UnknownHostException: mybatis.org at java.net.AbstractPlainSocketImpl.connect(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) […]

解析没有根元素的XML流

我需要解析连续的格式良好的XML元素,我只给它一个已经构造的java.io.Reader对象。 这些元素没有包含在根元素中,也没有像”这样的XML标头前缀,但它们是有效的XML。 使用Java org.xml.sax.XMLReader类不起作用,因为XML Reader期望从封闭的根元素开始解析格式良好的XML。 因此,它只读取流中的第一个元素,它将其视为根,并在下一个元素中失败,典型的 org.xml.sax.SAXParseException:根元素后面的文档中的标记必须格式正确。 对于不包含根元素的文件,但是这样的元素确实存在或者可以定义(并且被称为MyRootElement),可以执行以下操作: Strint path = ; XMLReader xmlReader = SAXParserFactory.newInstance().newSAXParser().getXMLReader(); StringBuilder buffer = new StringBuilder(); buffer.append(“\n”); buffer.append(“<!DOCTYPE MyRootElement "); buffer.append("[]>\n”); buffer.append(“\n”); buffer.append(“&data;\n”); buffer.append(“\n”); InputSource source = new InputSource(new StringReader(buffer.toString())); xmlReader.parse(source); 我已经通过将部分java.io.Reader输出保存到文件来测试上述内容并且它可以工作。 但是,这种方法在我的情况下不适用,并且无法插入此类额外信息(XML标头,根元素),因为已经构造了传递给我的代码的java.io.Reader对象。 基本上,我正在寻找“碎片式XML解析”。 所以,我的问题是,可以使用标准Java API(包括org.sax.xml.*和java.xml.*包)来完成吗?