Здравствуйте.
Вышла очеь неприятная ситуация, после работы с парсером STAX.
А именно сравнение констант r.getEventType() == XMLStreamConstants.CDATA даёт false??
Все другие константы ают true.
вот xml:
<item title=" 2" type="lesson" value="4" DB_ID="{....}">
<subject title=" " DB_ID="{...}">
</subject>
<targets title=" " DB_ID="{...}">
<target title=" 1" type="know" value = "4" significance = "important" DB_ID="{....}" DB_ID_LINK1 = "{}"><![CDATA[iukuk]]></target>
<target title=" 2" type="can" value = "6" significance = "unimportant" DB_ID="{....}"><![CDATA[erfgert]]>
</target>
</targets>
Буду очень презнателен Вашим подсказакам!
Здравствуйте, Аноним, Вы писали:
А>Вышла очеь неприятная ситуация, после работы с парсером STAX.
А>А именно сравнение констант r.getEventType() == XMLStreamConstants.CDATA даёт false??
А>Все другие константы ают true.
Не оно?
http://jira.codehaus.org/browse/STAX-14
Помледняя ява уже содержит фикс с исправлениями.
Кроме того в ней есть пример как пользовать фикс.
пример:
package samples;
import com.bea.xml.stream.util.ElementTypeNames;
import java.io.StringReader;
import java.util.Iterator;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.Namespace;
import javax.xml.stream.events.XMLEvent;
/**
* Requires StAX 1.0 (JSR 173) available at http://jcp.org/en/jsr/detail?id=173
*
*/
public class TestCdataReport extends TestXml
{
static String sampleXML =
//"<?xml version=\"1.0\"?><tag>Some <![CDATA[te]]>xt</tag> \n";
//"<?xml-stylesheet href=\"xmlconformance.xsl\" type=\"text/xsl\"?>"+
//"<bar><?xml-stylesheet href=\"xmlconformance.xsl\" type=\"text/xsl\"?></bar>"
"<foo>\n"
+" <bar>baz\n"
+" <cheese id=\"3\"/>\n"
+" baz\n"
+" <cheese/>\n"
+" baz\n"
+" </bar>\n"
+" <doc><![CDATA[<foo>]]></doc>\n"
+"</foo>\n"
;
public static void main(String[] s)
{
parseWithSTAX(sampleXML, configureStaxFactory());
System.exit(0);
}
public static XMLInputFactory configureStaxFactory() throws IllegalArgumentException, FactoryConfigurationError {
XMLInputFactory factory_d = TestXml.configureStaxFactory();
final String REPORT_CDATA = "http://java.sun.com/xml/stream/properties/report-cdata-event";
//Boolean enableCdataReport = Boolean.FALSE;
Boolean enableCdataReport = Boolean.TRUE;
try {
factory_d.setProperty(REPORT_CDATA, enableCdataReport);
} catch(IllegalArgumentException e) {
System.out.println("WARNING: property "+REPORT_CDATA+" not supported");
e.printStackTrace();
}
return factory_d;
}
}