XML SAX: объясните результат в qName и localName в одном примере XML-файла - PullRequest
1 голос
/ 25 февраля 2012

Я тестирую, как использовать SAXParser и понимаю его компонент.Вот мой XML-файл, который я использовал для проверки:

<?xml-stylesheet href="/externalflash/NASA_Detail/NASA_Detail.xsl" type="text/xsl"?>

<rss version="2.0">
    <channel>
        <title>NASA Image of the Day</title>
        <link>http://www.nasa.gov/multimedia/imagegallery/index.html</link>
        <description>The latest NASA "Image of the Day" image.</description>
        <language>en-us</language>
        <docs>http://blogs.law.harvard.edu/tech/rss</docs>
        <managingEditor>yvette.smith-1@nasa.gov</managingEditor>
        <webMaster>brian.dunbar@nasa.gov</webMaster>

        <item xmlns:java_code="xalan://gov.nasa.build.Utils1"> 
            <title>Expedition 30 Cosmonauts Perform Spacewalk</title> 
            <link>http://www.nasa.gov/multimedia/imagegallery/image_feature_2181.html</link>
            <description>This image of Russian cosmonauts Oleg Kononenko and Anton Shkaplerov, both Expedition 30 flight engineers, was taken during a spacewalk on Thursday, Feb. 16, 2012. During the six-hour, 15-minute spacewalk, Kononenko and Shkaplerov moved the Strela-1 crane from the Pirs Docking Compartment in preparation for replacing it in 2012 with a new laboratory and docking module. The duo used another boom, the Strela-2, to move the hand-operated crane to the Poisk module for future assembly and maintenance work. Both telescoping booms extend like fishing rods and are used to move massive components outside the station. On the exterior of the Poisk Mini-Research Module 2, they also installed the Vinoslivost Materials Sample Experiment, which will investigate the influence of space on the mechanical properties of the materials. The spacewalkers also collected a test sample from underneath the insulation on the Zvezda Service Module to search for any signs of living organisms. Both spacewalkers wore Russian Orlan spacesuits bearing blue stripes and equipped with NASA helmet cameras. Image Credit: NASA</description>
            <guid isPermaLink="true">http://www.nasa.gov/multimedia/imagegallery/image_feature_2181.html</guid>
            <pubDate>Wed, 22 Feb 2012 00:00:00 EST</pubDate>
            <enclosure length="1234567" type="image/jpeg" url="http://www.nasa.gov/images/content/624856main_image_2181_516-387.jpg"/>
        </item>
    </channel>
</rss>

Когда я использую SAXParser для проверки этого файла, вот какая-то строка моего вывода:

start Element: rss
Local Name  // this line I don't know why null
qNam: rss
start characters: 

start Element: channel
Local Name 
qNam: channel
start characters: 

Мой вопрос:в моем XML-файле нет namespace, поэтому каждый элемент будет принадлежать к его значению по умолчанию namespace, и поэтому qName будет равно local Name (потому что prefix для qName нет.

Но при вышеуказанном результате, в элементах rss и channel (и всех других, которые я еще не опубликовал), local Name является нулевым !!!

Кто мне может объяснить, пожалуйста.

спасибо:)

1 Ответ

3 голосов
/ 25 февраля 2012

Это немного неясно в Javadoc:

uri - URI пространства имен или пустая строка, если элемент не имеет URI пространства имен или если обработка пространства имен не выполняется

localName - локальное имя (без префикса) или пустая строка, если обработка пространства имен не выполняется

qName - полное имя (с префиксом) или пустая строка, если квалифицированные имена недоступны

atts - атрибуты, прикрепленные к элементу. Если атрибутов нет, это должен быть пустой объект Attributes. Значение этого объекта после возврата startElement не определено

При отключенной обработке пространства имен возвращается только qName (без префикса).

...