Android的如何解析CDATA标记? [英] Android how to parse CDATA TAG?
本文介绍了Android的如何解析CDATA标记?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
下面我有串,我想分析它!!!!
<?XML版本=1.0编码=ISO-8859-1&GT?;
< SOAP-ENV:信封的xmlns:SOAP-ENV =http://schemas.xmlsoap.org/soap/envelope/
的xmlns:XSD =http://www.w3.org/2001/XMLSchema中的xmlns:XSI =http://www.w3.org/2001/XMLSchema-instance
的xmlns:SOAP-ENC =http://schemas.xmlsoap.org/soap/encoding/>
< SOAP-ENV:身体与GT;
< NS1:GetDrinksResponse的xmlns:NS1 =http://schemas.xmlsoap.org/soap/envelope/>
<返回的xsi:type =XSD:XML>
<详情>
< ID> 1 LT; / ID>
<名称>&drinks1 LT; /名称>
&所述;盖→1&下; /盖子与GT;
< LName的><![CDATA [151证明朗姆酒]>< / LName的>
&所述; lamount>&下;![CDATA [12000]]≥&下; / lamount>
&所述; DMID→1&下; / DMID>
< MNAME><![CDATA [苹果汁]>< / MNAME>
&所述; mamount>&下;![CDATA [2323]]≥&下; / mamount>
<&INID GT;< / INID>
< inName><![CDATA []]>
< / inName>
< inamount><![CDATA []]>
< / inamount>
<玻璃>高球玻璃和LT; /玻璃和GT;
<方向及GT; 33 LT; /路线>
<调味品> 22℃; /调味品>
< /详细资料及GT;
<详情>
< ID> 2'; / ID>
<名称>&Drnks2 LT; /名称>
<&盖子GT;< /盖>
< LName的><![CDATA [101防波旁]>< / LName的>
&所述; lamount>&下;![CDATA [12000]]≥&下; / lamount>
&所述; DMID→2&下; / DMID>
< MNAME><![CDATA [苹果汁]>< / MNAME>
&所述; mamount>&下;![CDATA [25000]]≥&下; / mamount>
<&INID GT;< / INID>
< inName><![CDATA []]>
< / inName>
< inamount><![CDATA []]>
< / inamount>
<玻璃>鸡尾酒玻璃和LT; /玻璃和GT;
<方向及GT; SS< /路线>
<调味品> SD< /调味品>
< /详细资料及GT;
<详情>
<&ID→3 LT; / ID>
<名称>&吉姆利特LT; /名称>
<&盖子GT;< /盖>
&所述; LName的>&下;![CDATA [151-证明Rumsssssssss]]≥&下; / LName的>
< lamount><![CDATA [1秒]>< / lamount>
&所述; DMID→3&下; / DMID>
< MNAME><![CDATA [苹果汁]>< / MNAME>
&所述; mamount>&下;![CDATA [1]]≥&下; / mamount>
<&INID GT;< / INID>
< inName><![CDATA []]>
< / inName>
< inamount><![CDATA []]>
< / inamount>
<玻璃>定期< /玻璃和GT;
<方向及GT; sadasd< /路线>
<调味品> ASD< /调味品>
< /详细资料及GT;
<详情>
<&ID GT; 4℃; / ID>
<名称>&Drinlks3 LT; /名称>
<&盖子GT;< /盖>
&所述; LName的>&下;![CDATA [151-证明Rumsssssssssssss]]≥&下; / LName的>
&所述; lamount>&下;![CDATA [12000]]≥&下; / lamount>
&所述; DMID→4&下; / DMID>
< MNAME><![CDATA [苹果汁]>< / MNAME>
&所述; mamount>&下;![CDATA [2323]]≥&下; / mamount>
<&INID GT;< / INID>
< inName><![CDATA []]>
< / inName>
< inamount><![CDATA []]>
< / inamount>
<玻璃>定期< /玻璃和GT;
<方向及GT; 33 LT; /路线>
<调味品> 22℃; /调味品>
< /详细资料及GT;
<详情>
<&ID GT; 5℃/ ID>
<名称>阿布Julianah博士< /名称>
<&盖子GT;< /盖>
< LName的><![CDATA [151证明朗姆酒]>< / LName的>
&所述; lamount>&下;![CDATA [SSS]]≥&下; / lamount>
&所述; DMID> 5℃/ DMID>
< MNAME><![CDATA [苹果汁]>< / MNAME>
&所述; mamount>&下;![CDATA [2323]]≥&下; / mamount>
<&INID GT;< / INID>
< inName><![CDATA []]>
< / inName>
< inamount><![CDATA []]>
< / inamount>
<玻璃>鸡尾酒玻璃和LT; /玻璃和GT;
<方向及GT; 33 LT; /路线>
<调味品> 22℃; /调味品>
< /详细资料及GT;
<详情>
<&ID GT; 6≤/ ID>
<名称>阿布博士< /名称>
<&盖子GT;< /盖>
< LName的><![CDATA [151证明朗姆酒]>< / LName的>
&所述; lamount>&下;![CDATA [12000]]≥&下; / lamount>
&所述; DMID→6&下; / DMID>
&所述; MNAME>&下;![CDATA [苹果Juicesssssss]]≥&下; / MNAME>
&所述; mamount>&下;![CDATA [sddddddd]]≥&下; / mamount>
<&INID GT;< / INID>
< inName><![CDATA []]>
< / inName>
< inamount><![CDATA []]>
< / inamount>
<玻璃>< /玻璃和GT;
<方向及GT; 33 LT; /路线>
<调味品> 22℃; /调味品>
< /详细资料及GT;
<详情>
< ID> 7 LT; / ID>
<名称>&吉姆利特LT; /名称>
<&盖子GT;< /盖>
&所述; LName的>&下;![CDATA [1Testliquers]]≥&下; / LName的>
&所述; lamount>&下;![CDATA [12000]]≥&下; / lamount>
<&盖子GT;< /盖>
&所述; LName的>&下;![CDATA [sdffds]]≥&下; / LName的>
&所述; lamount>&下;![CDATA [dsdf]]≥&下; / lamount>
&所述; DMID大于7&下; / DMID>
&所述; MNAME>&下;![CDATA [苹果Juiceaaaaaaaaa]]≥&下; / MNAME>
&所述; mamount>&下;![CDATA [aaaaaaaaaaaaa]]≥&下; / mamount>
&所述; DMID→8&下; / DMID>
< MNAME><![CDATA [七喜]>< / MNAME>
&所述; mamount>&下;![CDATA [2323]]≥&下; / mamount>
&所述; INID→1&下; / INID>
< inName><![CDATA []]>
< / inName>
< inamount><![CDATA []]>
< / inamount>
&所述; INID→2&下; / INID>
< inName><![CDATA []]>
< / inName>
< inamount><![CDATA []]>
< / inamount>
<玻璃>定期< /玻璃和GT;
<方向及GT;< /路线>
<干货及调味品GT;< /调味品>
< /详细资料及GT;
< /返回>
< / NS1:GetDrinksResponse>
< / SOAP-ENV:身体与GT;
< / SOAP-ENV:信封>
这是我的code和响应上述XML字符串...........
如何解析器和请给我处理类...............
的SAXParserFactory SPF = SAXParserFactory.newInstance();
的SAXParser SP = spf.newSAXParser();
XMLReader的XR = sp.getXMLReader(); ExampleHandler myExampleHandler =新ExampleHandler();
xr.setContentHandler(myExampleHandler); xr.parse(新的InputSource(response.toString())); ParsedExampleDataSet parsedExampleDataSet = myExampleHandler
.getParsedData();
异常:::
java.io.FileNotFoundException:
在java.io.FileInputStream.open(本机方法)
在java.io.FileInputStream中的<&初始化GT;(未知来源)
在java.io.FileInputStream中的<&初始化GT;(未知来源)
在sun.net.www.protocol.file.FileURLConnection.connect(来源不明)
在sun.net.www.protocol.file.FileURLConnection.getInputStream(来源不明)
在com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(来源不明)
在com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(来源不明)
在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(来源不明)
在com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(来源不明)
在com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(来源不明)
在com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(来源不明)
在com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl $ JAXPSAXParser.parse(来源不明)
在DrinkParser.executeRequest(DrinkParser.java:105)
在DrinkParser<&初始化GT;(DrinkParser.java:64)
在DrinkParser.main(DrinkParser.java:149)
解决方案
烨问题解决...............
factory.setCoalescing(真);
DocumentFactory和CDATA被删除,解析是像为常规的XML文件...............
I have below String i want to parse it !!!!
<?xml version="1.0" encoding="ISO-8859-1"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:GetDrinksResponse xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/">
<return xsi:type="xsd:xml">
<Details>
<id>1</id>
<Name>drinks1</Name>
<lid>1</lid>
<LName><![CDATA[ 151-Proof Rum]]></LName>
<lamount><![CDATA[12000]]></lamount>
<dmid>1</dmid>
<mname><![CDATA[Apple Juice]]></mname>
<mamount><![CDATA[2323]]></mamount>
<inid></inid>
<inName><![CDATA[]]>
</inName>
<inamount><![CDATA[]]>
</inamount>
<Glass>HighBall Glass</Glass>
<Directions>33</Directions>
<Condiment>22</Condiment>
</Details>
<Details>
<id>2</id>
<Name>Drnks2</Name>
<lid></lid>
<LName><![CDATA[ 101-Proof Bourbon]]></LName>
<lamount><![CDATA[12000]]></lamount>
<dmid>2</dmid>
<mname><![CDATA[Apple Juice]]></mname>
<mamount><![CDATA[25000]]></mamount>
<inid></inid>
<inName><![CDATA[]]>
</inName>
<inamount><![CDATA[]]>
</inamount>
<Glass>Cocktail Glass</Glass>
<Directions>ss</Directions>
<Condiment>sd</Condiment>
</Details>
<Details>
<id>3</id>
<Name>Gimlet</Name>
<lid></lid>
<LName><![CDATA[ 151-Proof Rumsssssssss]]></LName>
<lamount><![CDATA[1s]]></lamount>
<dmid>3</dmid>
<mname><![CDATA[Apple Juice]]></mname>
<mamount><![CDATA[1]]></mamount>
<inid></inid>
<inName><![CDATA[]]>
</inName>
<inamount><![CDATA[]]>
</inamount>
<Glass>Regular</Glass>
<Directions>sadasd</Directions>
<Condiment>asd</Condiment>
</Details>
<Details>
<id>4</id>
<Name>Drinlks3</Name>
<lid></lid>
<LName><![CDATA[ 151-Proof Rumsssssssssssss]]></LName>
<lamount><![CDATA[12000]]></lamount>
<dmid>4</dmid>
<mname><![CDATA[Apple Juice]]></mname>
<mamount><![CDATA[2323]]></mamount>
<inid></inid>
<inName><![CDATA[]]>
</inName>
<inamount><![CDATA[]]>
</inamount>
<Glass>Regular</Glass>
<Directions>33</Directions>
<Condiment>22</Condiment>
</Details>
<Details>
<id>5</id>
<Name>Dr Abu Julianah</Name>
<lid></lid>
<LName><![CDATA[ 151-Proof Rum]]></LName>
<lamount><![CDATA[sss]]></lamount>
<dmid>5</dmid>
<mname><![CDATA[Apple Juice]]></mname>
<mamount><![CDATA[2323]]></mamount>
<inid></inid>
<inName><![CDATA[]]>
</inName>
<inamount><![CDATA[]]>
</inamount>
<Glass>Cocktail Glass</Glass>
<Directions>33</Directions>
<Condiment>22</Condiment>
</Details>
<Details>
<id>6</id>
<Name>Dr Abu</Name>
<lid></lid>
<LName><![CDATA[ 151-Proof Rum]]></LName>
<lamount><![CDATA[12000]]></lamount>
<dmid>6</dmid>
<mname><![CDATA[Apple Juicesssssss]]></mname>
<mamount><![CDATA[sddddddd]]></mamount>
<inid></inid>
<inName><![CDATA[]]>
</inName>
<inamount><![CDATA[]]>
</inamount>
<Glass></Glass>
<Directions>33</Directions>
<Condiment>22</Condiment>
</Details>
<Details>
<id>7</id>
<Name>Gimlet</Name>
<lid></lid>
<LName><![CDATA[ 1Testliquers]]></LName>
<lamount><![CDATA[12000]]></lamount>
<lid></lid>
<LName><![CDATA[sdffds]]></LName>
<lamount><![CDATA[dsdf]]></lamount>
<dmid>7</dmid>
<mname><![CDATA[Apple Juiceaaaaaaaaa]]></mname>
<mamount><![CDATA[aaaaaaaaaaaaa]]></mamount>
<dmid>8</dmid>
<mname><![CDATA[7-Up]]></mname>
<mamount><![CDATA[2323]]></mamount>
<inid>1</inid>
<inName><![CDATA[]]>
</inName>
<inamount><![CDATA[]]>
</inamount>
<inid>2</inid>
<inName><![CDATA[]]>
</inName>
<inamount><![CDATA[]]>
</inamount>
<Glass>Regular</Glass>
<Directions></Directions>
<Condiment></Condiment>
</Details>
</return>
</ns1:GetDrinksResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
here is my code and response is above Xml String........... How to parser in and please give me Handler Class................
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
ExampleHandler myExampleHandler = new ExampleHandler();
xr.setContentHandler(myExampleHandler);
xr.parse(new InputSource(response.toString()));
ParsedExampleDataSet parsedExampleDataSet = myExampleHandler
.getParsedData();
Exception:::
java.io.FileNotFoundException:
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.connect(Unknown Source)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at DrinkParser.executeRequest(DrinkParser.java:105)
at DrinkParser.<init>(DrinkParser.java:64)
at DrinkParser.main(DrinkParser.java:149)
解决方案
Yup Problem is solved...............
factory.setCoalescing(true);
DocumentFactory and CDATA is removed and parsing is as like as Normal XML File................
这篇关于Android的如何解析CDATA标记?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文