Hallo Sebastian,
C# und .NET ignoriere ich eigentlich so gut ich kann, aber wenn du meinen Code lesen kannst, dann findest du deinen Fehler vielleicht selbst:
Delphi-Quellcode:
uses
MSXML2;
const
NSMY = 'http://schemas.microsoft.com/office/infopath/2003/myXSD/2006-02-09T21:22:41';
TESTXML = 'DeineTestDaten.xml';
procedure TDemoForm.DemoButtonClick(Sender: TObject);
var
e: IXMLDOMElement;
begin
with CoDOMDocument40.Create do
begin
async := False;
setProperty('SelectionNamespaces', Format('xmlns:my="%s"', [NSMY]));
if Load(TESTXML) then
begin
e := selectSingleNode('my:myFields/my:edName') as IXMLDOMElement;
if Assigned(e)
then ShowMessage(e.text)
else ShowMessage('rats!');
end;
end;
end;
Zu deinen XPATH-Versuchen: durch den Slash am Anfang wechselst du den context für die expression. Da du das document als context vorgibst (XmlDoc.selectSingleNode...) outet dich der führende Slash höchstens als Mitglied der Hosenträger-und-Gürtel-Fraktion. Garnicht funktionieren kann 'my:edName' - ob mit oder ohne Slash. Funktionieren würde '//my:edName' oder '/*/my:edName'.
Grüße vom marabu