/ / Prečo XML :: Simple vyrovnáva túto poznámku Tomboy? - xml, perl

Prečo XML :: Jednoduché sploštiť túto poznámku Tomboy? - xml, perl

Snažím sa analyzovať a Divoška poznámka, ktorá má v sebe odkaz na inú poznámku. XML vychádza takto:

<?xml version="1.0" encoding="utf-8"?>
<note version="0.3" xmlns:link="http://beatniksoftware.com/tomboy/link" xmlns:size="http://beatniksoftware.com/tomboy/size" xmlns="http://beatniksoftware.com/tomboy">
<title>Our IP Blocks</title>
<text xml:space="preserve"><note-content version="0.1">Our IP Blocks

What"s <link:internal>in use</link:internal>?</note-content></text>
<last-change-date>2009-03-10T10:24:36.3730770-04:00</last-change-date>
<last-metadata-change-date>2009-03-10T10:24:36.3730770-04:00</last-metadata-change-date>
<create-date>2009-03-10T10:23:14.2936280-04:00</create-date>
<cursor-position>92</cursor-position>
<width>450</width>
<height>289</height>
<x>0</x>
<y>27</y>
<open-on-startup>False</open-on-startup>
</note>

Rozoberám to s XML :: Simple, a vyťahuje sa <link:internal /> uzol do samostatného objektu v rámci Perl

EDIT: Výsledný objekt (pre <text /> uzol vyzerá takto. Upozorňujeme, že parameter „link: internal“ je samostatná entita od obsahu.

"text" => {
"xml:space" => "preserve",
"note-content" => {
"version" => "0.1",
"link:internal" => "in use",
"content" => [
"Our IP Blocks
What"s ",
"?"
]
}
}

Je to chyba, alebo som sa zbláznil? Všetci overovatelia naznačujú, že ide o platný formát XML, ale nikdy predtým som to nevidel so značkou vnorenou do tohto textu.

Ak ide o chybu, vie niekto o inom module XML, ktorý získa toto právo?

odpovede:

5 pre odpoveď č. 1

XML ::Simple nie je vhodný modul na analýzu pre všeobecnú analýzu XML. Bol navrhnutý s jediným cieľom, a to: syntaktická analýza konfiguračných súborov vo formáte XML. Takže to údaje trocha - alebo veľmi zjednodušuje - v závislosti od toho, čím ich kŕmite. Ak vám záleží na poradí textu a značiek, tento modul by ste nemali používať.


2 pre odpoveď č. 2

Vyššie uvedené je úplne platné XML. Máte úvodný prvok, za ktorým nasleduje textový uzol a za ním úvodný prvok.

Myslím (možno), že text, ktorý analyzujete, nebol správne uniknutý pred vložením do uzla najvyššej úrovne. Napríklad mali by byť

What"s &lt;link:internal&gt;in use&lt;/link:internal&gt;

To by potom viedlo k tomu, že by sa text dostal do jedného textového uzla a obsah by nebol analyzovaný (ak to čítam správne).