Laden...

Probleme mit XmlDocument und SelectSigngleNode

Erstellt von jogibear9988 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.712 Views
J
jogibear9988 Themenstarter:in
641 Beiträge seit 2007
vor 13 Jahren
Probleme mit XmlDocument und SelectSigngleNode

Ich versuche mit XmlDocument ein XML Dokument zu bearbeiten (ein Visual Studio project File).

hier mein Code:


            System.Xml.XmlDocument prj=new XmlDocument();
            prj.Load(vs21010project);
            var appendNode = prj.SelectSingleNode("/Project/PropertyGroup[1]");

Nun ist das problem das appendNode null ist. Aber wenn Ich diesen Ausdruck mit dem XPath Visualizer (http://xpathvisualizer.codeplex.com/) auf mein Project File anwende, dann zeigt der mir genau das als markiert an was Ich will! was mach Ich falsch?

cSharp Projekte : https://github.com/jogibear9988

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

was mach Ich falsch?

Du beachtest nicht das der Standardnamespace umdefiniert wird in der XML Datei.

Baka wa shinanakya naoranai.

Mein XING Profil.

J
jogibear9988 Themenstarter:in
641 Beiträge seit 2007
vor 13 Jahren
Danke..

Danke das war der entscheidende Hinweis.

So gehts:


System.Xml.Linq.XDocument doc;
            
            System.Xml.XmlDocument prj=new XmlDocument();
            
            prj.Load(vs21010project);            

            XmlNamespaceManager nsmgr = new XmlNamespaceManager(prj.NameTable);
            nsmgr.AddNamespace("ms", "http://schemas.microsoft.com/developer/msbuild/2003");            

            XmlNode appendNode = prj.SelectSingleNode("//ms:PropertyGroup[1]", nsmgr);

cSharp Projekte : https://github.com/jogibear9988

T
151 Beiträge seit 2005
vor 13 Jahren

Hey,

ich habe grad ein ähnliches Problem. Allerdings weiß ich nicht was Namespace umschreiben bedeutet oder wie ich das lösen kann.

Kann mir jemand einen Hint geben?

T
151 Beiträge seit 2005
vor 13 Jahren

OK, habs jetzt zum laufen bekommen. Aber warum geht das nicht ohne dieses Namespace zeugs. XPath an sich ist doch eindeutig oder?

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

nein, es geht nicht ohne. XML ohne Namespaces gibt es im Prinzip nicht. Zumindest implizit gibt es immer einen Namespace und wenns der leere ist. Sobald man aber selber einen definiert dann muss man in Anwendungen die zwischen Namespaces unterscheiden müssen (und das muss XPath), immer die Namespaces entsprechend angeben und mitbehandeln.

Baka wa shinanakya naoranai.

Mein XING Profil.