prueba asi
local cSrcFileName := "Archivo.xml"
local cNodeName := "Precio"
local cNodeString := ''
local cNodeBegTag := "<Precio"
local cNodeEndTag := "</Precio>"
local cSrcString
cSrcString := HB_MEMOREAD( cSrcFileName )
cNodeString:= HL_ExtrcSIS( cSrcString, cNodeBegTag, cNodeEndTag )
? "<Precio"+cNodeString+"</Precio>"
RETURN
procedure HL_ExtrcSIS(; // Extract String IN String
cUpStr,; // Up-String
cDelm1,; // Delimiter - 1
cDelm2) // Delimiter - 2
LOCAL cRVal := '',;
nPos1 := 0,;
nPos2 := 0
IF !EMPTY( cUpStr ) .AND. !EMPTY( cDelm1 ) .AND. (!EMPTY( cDelm2 ) .OR. cDelm2 == CRLF ) // A517..21
IF cDelm1 $ cUpStr
nPos1 := AT( cDelm1, cUpStr ) + LEN( cDelm1 )
IF cDelm2 $ SUBS( cUpStr, nPos1 )
inkey(.
nPos2 := HL_PAT( nPos1, cDelm2, cUpStr )
cRVal := SUBS( cUpStr, nPos1, nPos2-nPos1 )
cUpStr := SUBS( cUpStr, 1, nPos1 - LEN( cDelm1 ) - 1 ) + SUBS( cUpStr, nPos2 + LEN(cDelm2) )
ELSE
cRVal := SUBS( cUpStr, nPos1 )
cUpStr := LEFT( cUpStr, nPos1 )
ENDIF cDelm2 $ SUBS( cUpStr, nPos1 )
ENDIF cDelm1 $ cUpStr
ENDIF !EMPTY( cUpStr ) .AND. !EMPTY( cDelm1 ) .AND. !EMPTY( cDelm2 ) // A517
RETU cRVal // HL_ExtrcSIS()
PROCEDURE HL_PAT(nBasPos,cAraKtr, cInKtr)
LOCAL nRVal := 0
IF nBasPos <= LEN( cInKtr )
nRVal := AT( cAraKtr, SUBS( cInKtr, nBasPos ) )
IF nRVal > 0
nRVal := nBasPos + nRVal - 1
ENDI
ENDIF nBasBos <= LEN( cAraKtr )
RETU nRVal
SALUDOS