STAX отказывается читать CDATA??
От: Аноним  
Дата: 31.05.07 18:05
Оценка:
Здравствуйте.

Вышла очеь неприятная ситуация, после работы с парсером 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>


Буду очень презнателен Вашим подсказакам!
Re: STAX отказывается читать CDATA??
От: Blazkowicz Россия  
Дата: 01.06.07 09:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вышла очеь неприятная ситуация, после работы с парсером STAX.

А>А именно сравнение констант r.getEventType() == XMLStreamConstants.CDATA даёт false??
А>Все другие константы ают true.

Не оно?
http://jira.codehaus.org/browse/STAX-14
Re: STAX отказывается читать CDATA??
От: BOSSSS Россия  
Дата: 03.06.07 14:00
Оценка:
Помледняя ява уже содержит фикс с исправлениями.
Кроме того в ней есть пример как пользовать фикс.

пример:

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;
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.