## Pyramid.XmlObject

Pyramid.XmlObject är en klass som möjliggör hanterande av XML-dokument i betakod. Ett Pyramid.XmlObject representerar ett XML-dokument och har inbyggd funktionalitet för navigering i dokumentet. Navigering sker mellan elementnoder. Om dokumentet inte är tomt, så finns det alltid ett aktuellt element som man arbetar mot. Ett objekt skapas med

object oXml
create_object("Pyramid.XmlObject") -> oXml

När objektet är färdiganvänt måste det frigöras med

delete_object(oXml)

Pyramid.XmlObject installeras med InstallXmlObject.vbs i xml-mappen. Installationen medför att XmlObject.dll i samma mapp registreras i datorns systemregister.

### Dokument

#### bool Load(str filename)

Läser in ett XML-dokument från en fil. Om läsningen lyckades returneras sant. Vid fel retuneras falskt och felmeddelandet ges av ErrorMessage(). Om felet berodde på att XML-filen inte är välformad så ger ErrorLineNumber() och ErrorLinePosition() var i filen som det är fel.

#### bool LoadXml(str xml)

Läser in ett XML-dokument från en sträng. Om läsningen lyckades returneras sant. Vid fel returneras falskt och felmeddelandet ges av ErrorMessage(). Funktionerna ErrorLineNumber() och ErrorLinePosition() ger då var i strängen som XML-koden inte är korrekt.

#### bool Save(str filename, str encoding)

Sparar XML-dokumentet till en fil med den kodning som anges i encoding. Kodningen kan lämnas tom och då kommer UTF-8 att användas. Om sparandet lyckades returneras sant, annars falskt och ett felmeddelande kan hämtas med ErrorMessage().

#### void Clear()

Tömmer dokumentet.

#### void SetRoot(str name, str rootNamespaceURI)

Skapar ett rotelement med angivet namn och namnrum. Det nya rotelementet blir aktuellt element.

#### str DocumentXml()

Ger en XML-sträng för hela dokumentet. Kodningen i en sträng är alltid ISO-8859-1.

#### bool Transform(str stylesheetFilename, str outputFilename)

Utför en XSL-transformation på dokumentet. XSLT-filen hämtas från stylesheetFilename. Resultatet av transformationen sparas till outputFilename. Om allting gick bra returneras sant. Om något fel uppstod returneras falskt och felmeddelandet ges av ErrorMessage(). Om felet berodde på att XSLT-filen inte är välformad så ger ErrorLineNumber() och ErrorLinePosition() var i filen som det är fel.

###

### Aktuellt element

#### str Text()

Textinnehållet i aktuellt element. Textinnehållet är sammanslagningen av alla textnoder tillhörande aktuellt element och alla dess barn, barnbarn osv. Kan även tilldelas, i så fall ersätts alla eventuella barnnoder till aktuellt element med endast en textnod.

#### str Name()

Namnet för aktuellt element. Detta inkluderar eventuellt prefix och är samma som tagg-namnet för aktuellt element.

#### str LocalName()

Namnet utan eventuellt prefix för aktuellt element.

#### str NamespaceURI()

Namnrummet som aktuellt element tillhör.

#### str Prefix()

Prefixet för aktuellt element. Kan tilldelas.

#### str CurrentXml()

Ger en XML-sträng för den aktuella elementnoden och alla dess barn.

#### str GetAttribute(str name)

Ger värdet för attributet med angivet namn. Om attributet inte existerar returneras en tom sträng.

#### void SetAttribute(str name, str value)

Sätter värdet för angivet attribut.

#### bool HasAttribute(str name)

Ger sant om aktuellt element har ett attribut med angivet namn, annars returneras falskt.

#### void RemoveAttribute(str name)

Tar bort angivet attribut från aktuellt element.

#### int AttributeCount()

Antalet attribut som aktuellt element har.

#### str GetAttributeNameByIndex(int index)

Ger namnet för attributet med givet index för aktuellt element. Första attributet har index 0 och sista har index lika med antal attribut minus ett.

#### str GetAttributeValueByIndex(int index)

Ger värdet för attributet med givet index för aktuellt element. Första attributet har index 0 och sista har index lika med antal attribut minus ett.

###

### Söka

#### bool SelectSingleElement(str xpath, str prefix)

Utför en XPath-sökning utgående från aktuellt element. Namnrummet för det aktuella elementet kopplas till angivet prefix. Om ett element hittas returneras sant och det funna elementet blir nytt aktuellt element. Om inget element hittades returneras falskt och aktuellt element förblir samma.

### Navigera

#### void MoveToLastCreated()

Flyttar till sist skapade element.

#### bool MoveToChild(str name)

Flyttar till aktuellt elements barnelement med angivet namn. Om det finns flera barnelement med angivet namn, så väljs det första. Returnerar sant om det gick att flytta till ett barnelement med givet namn, annars returneras falskt och aktuellt element förblir samma.

#### bool MoveToNextNamedSibling(str name)

Flyttar till aktuellt elements nästa syskonelement med angivet namn. Om det finns flera efterföljande syskonelement med angivet namn, så väljs första. Returnerar sant om det gick att flytta till ett efterföljande syskonelement med givet namn, annars returneras falskt och aktuellt element förblir samma.

#### int ChildrenCount

Antal barnelement till aktuellt element.

#### bool MoveToFirstChild()

Flyttar till aktuellt elements första barn. Returnerar sant om det fanns ett barnelement att flytta till, annars falskt och aktuellt element förblir samma.

#### bool MoveToLastChild()

Flyttar till aktuellt elements sista barn. Returnerar sant om det fanns ett barnelement att flytta till, annars falskt och aktuellt element förblir samma.

#### bool MoveToNextSibling()

Flyttar till aktuellt elements nästa syskonelement. Returnerar sant om det fanns ett efterföljande syskonelement att flytta till, annars falskt och aktuellt element förblir samma.

#### bool MoveToPreviousSibling()

Flyttar till aktuellt elements föregående syskonelement. Returnerar sant om det fanns ett föregående syskonelement att flytta till, annars falskt och aktuellt element förblir samma.

#### bool MoveToParent()

Flyttar till aktuellt elements föräldraelement. Returnerar sant om det fanns ett föräldraelement att flytta till, annars falskt och aktuellt element förblir samma.

#### bool MoveToRoot()

Flyttar till dokumentets rotelelement. Returnerar sant om det fanns ett rotelement att flytta till, annars falskt och aktuellt element förblir samma, dvs. ogiltigt eftersom dokumentet i så fall inte inehåller några element.

#### bool HasChildElements()

Ger sant om aktuellt element har ett eller flera barnelement.

#### bool HasNextSibling()

Ger sant om aktuellt element har en efterföljande elementnod.

#### bool HasPreviousSibling()

Ger sant om aktuellt element har en föregående elementnod.

#### bool HasRoot()

Ger sant om dokumentet har ett rotelement.

#### void SetMark(str name)

Sparar aktuell position som ett bokmärke med angivet namn.

#### bool MoveToMark(str name)

Flyttar till elementet som har sparats undan med namngivet bokmärke. Returnerar sant om bokmärket fanns, annars falskt och aktuellt element förblir samma.

#### void Push()

Sparar aktuell position på en stack.

#### bool Pop()

Flyttar till det element som är överst på stacken och tar bort elementet från stacken. Returnerar sant om det fanns ett element på stacken att flytta till, annars falskt och aktuellt element förblir samma.

#### bool Peek()

Flyttar till det element som är överst på stacken, men låter elementet ligga kvar på stacken. Returnerar sant om det finns ett eleement på stacken, annars falskt och aktuellt element förblir samma.

###

### Redigera

#### bool AppendChild(string name, string text)

Skapar ett nytt barnelement till aktuellt element. Det nya barnelementet hamnar efter övriga barnelement. Elementet kommer att tillhöra samma namnrum som föräldraelementet. Returnerar sant om det gick att skapa ett barnelement, annars falskt.

bool AppendChildWithNamespace(string name, string namespaceURI, string text)

Skapar ett nytt barnelement till aktuellt element. Det nya barnelementet hamnar efter övriga barnelement. Elementet kommer att tillhöra det namnrum som anges i namepspaceURI. Returnerar sant om det gick att skapa ett barnelement, annars falskt.

#### bool PrependChild(string name, string text)

Skapar ett nytt barnelement till aktuellt element. Det nya barnelementet hamnar före övriga barnelement. Returnerar sant om det gick att skapa ett barnelement, annars falskt.

#### bool InsertBeforeChild(int child, string name, string text)

Skapar ett nytt barnelement till aktuellt element och placerar det före barnelementet med index child. Returnerar sant om det gick att skapa ett barnelement, annars falskt.

#### bool InsertAfterChild(int child, string name, string text)

Skapar ett nytt barnelement till aktuellt element och placerar det efter barnelementet med index child. Returnerar sant om det gick att skapa ett barnelement, annars falskt.

#### bool InsertBeforeCurrent(string name, string text)

Skapar ett nytt element som sykonelelement före aktuellt element. Returnerar sant om det gick att skapa ett syskonelement, annars falskt.

#### bool InsertAfterCurrent(string name, string text)

Skapar ett nytt element som syskonelement efter aktuellt element. Returnerar sant om det gick att skapa ett syskonelement, annars falskt.

#### void RemoveAll()

Tar bort alla attribut och barnelement till aktuellt element.

#### bool RemoveChild(int index)

Tar bort barnelementet med angivet index.

#### void DeleteCurrent()

Raderar aktuellt element. Nytt aktuellt element blir elementets föräldraelement. Om elementet är rotelementet så blir aktuellt element ogilitigt.

###

### SOAP

#### bool WrapIntoSOAPEnvelope()

Skapar ett SOAP 1.1-envelope omkring dokumentet. Nuvarande rotelementet blir barnelement till Body-elementet och nytt rotelement blir Envelope-elementet.

#### bool UnwrapSOAPEnvelope()

Tar bort ett SOAP 1.1-envelope kring dokumentet. Nytt rotelement blir Body-elementets barnelement.

#### object CallSOAPService(string url)

Gör ett anrop till angiven URL och skickar med detta objekts XML-dokument. Från svaret skapas ett nytt XmlObject som returneras. Om något gick fel returneras null och felmeddelandet ges av ErrorMessage(). För att testa att ett objekt returnerades använder man betainstruktionen is_valid_object.

### Felinformation

#### str ErrorMessage()

Felmeddelande för senast inträffade fel.

#### int ErrorLineNumber()

Ger det radnummer där XML-dokumentet inte är välformat om det inte gick att läsa med Load() eller LoadXml(). Även aktuellt radnummer om Transform() misslyckades pga. att XSLT-filen inte var välformad.

#### int ErrorLinePosition()

Ger den kolumn där XML-dokumentet inte är välformat om det inte gick att läsa med Load() eller LoadXml(). Även aktuell kolumn om Transform() misslyckades pga. att XSLT-filen inte var välformad.