substring funktion in MSXML Automation

11. Juli 2011 15:58

Hallo,

ich arbeite gerade mit MSXML Automations und versuche gerade einige Nodes auszulesen. Leider sind einige Texte 1024 Zeichen lang.
Ich habe etwas recherchiert und rausgefunden, dass es eine substring-funktion in xpath gibt.

Hat sich damit jemand befasst?
Wenn ich so einen Befehl in selectSingleNodes als Parameter übergebe, meckert er, dass der Ausdruck keine Node zurückgibt.
Gibt es da eine Funktion die ich dazu nutzen könnte?

Gruß
Jan

Re: substring funktion in MSXML Automation

13. Juli 2011 09:56

Hallo,

kurz und knapp. Ich hoffe du kommst damit zurecht :)

XML-Datei:
Code:
<booklist listtitle="Science Fiction">
<book>
<title>The Naked Sun</title>
<author>Isaac Asimov</author>
<isbn>0553293397</isbn>
</book>
<book>
<title>Foundation's Triumph</title>
<author>David Brin</author>
<isbn>0061056391</isbn>
</book>
</booklist>


Navision Code:
Var: XMLDOM := MSXML XMLDOMDocument
node := MSXML node
Code:
node := XMLDom.selectSingleNode('/booklist/book[1]/substring(title,1,3)');


dieser xPath ausdruck holt aus dem Root "booklist" den ersten "[1]" book knoten und daraus wiederum die ersten 3 Zeichen aus dem titel..

Alternativ kannst du auch folgendes schreiben
Code:
node := XMLDom.selectSingleNode('/booklist/book[1]/substring(./title,1,3)');


oder last but not least
Code:
node := XMLDom.selectSingleNode('substring(/booklist/book[1]/title,1,3)');


Rückgabewert wäre in allen Fällen "The"

Grüße

Re: substring funktion in MSXML Automation

14. Juli 2011 09:34

oder du beschäftigst dich mit transformNodeToObject und XML Stylesheets. Damit kann man sich temporär die passenden Nodes zusammenbasteln.