package com.unittest; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.StringReader; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import junit.framework.TestCase; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.InputSource; import org.xml.sax.SAXException; public class StringXMLTest extends TestCase { public void testConsole(){ String xml1 = "<CODEITEM><ID>10004</ID><NAME>4</NAME><CONTENT>it is the 4th item</CONTENT></CODEITEM>"; String xml2 = "<CODEITEM><ID>10004</ID><NAME>4</NAME><CONTENT>这是第4个item。</CONTENT></CODEITEM>"; String xml3 = "<CODEITEM><ID><![CDATA[10004]]></ID><NAME><![CDATA[4]]></NAME><CONTENT><![CDATA[这是第4个item。]]></CONTENT></CODEITEM>"; String xml4 = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><CODEITEM><ID><![CDATA[10004]]></ID><NAME><![CDATA[4]]></NAME><CONTENT><![CDATA[这是第4个item。]]></CONTENT></CODEITEM>"; String[] xml = new String[]{xml1,xml2,xml3,xml4}; Document doc; Element root; String id,name,content; try { for (int i = 0; i < xml.length; i++) { System.out.println("xml" + (i+1) + ":"); System.out.println("method1:"); doc = transferStringToDocument1(xml[i]); root = (Element) doc.getElementsByTagName("CODEITEM").item(0); id = root.getAttribute("ID"); name = root.getAttribute("NAME"); content = root.getAttribute("CONTENT"); System.out.println("id = " + id); System.out.println("name = " + name); System.out.println("content = " + content); System.out.println("method2:"); doc = transferStringToDocument2(xml[i]); root = (Element) doc.getElementsByTagName("CODEITEM").item(0); id = root.getAttribute("ID"); name = root.getAttribute("NAME"); content = root.getAttribute("CONTENT"); System.out.println("id = " + id); System.out.println("name = " + name); System.out.println("content = " + content + "\n"); } } catch (Exception e) { e.printStackTrace(); } } private Document transferStringToDocument1(String s) throws ParserConfigurationException, SAXException, IOException{ StringReader reader = new StringReader(s); InputSource is = new InputSource(reader); DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.parse(is); return doc; } private Document transferStringToDocument2(String s) throws ParserConfigurationException, SAXException, IOException{ DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); Document doc = builder.parse(new ByteArrayInputStream(s.getBytes())); return doc; } }
各位,我写了一个把包含XML信息的String转化成Docuemnt对象的方法,为什么总是不对啊?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- iteye_18182 2011-02-14 09:59关注
获取结果的方法错了应该是
[code="java"]
id = root.getFirstChild().getTextContent();
name = root.getChildNodes().item(1).getTextContent();
content = root.getChildNodes().item(2).getTextContent();
[/code]transferStringToDocument2 这个方法和当明编码格式有关最好不要用
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 要给毕业设计添加扫码登录的功能!!有偿
- ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
- ¥15 微信公众号自制会员卡没有收款渠道啊
- ¥15 stable diffusion
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件