Sestavení XML path pro XmlDocument v .NET

Giovanna

Sestavení XML path pro XmlDocument v .NET
« kdy: 13. 08. 2015, 01:38:40 »
Dobrý den,
opět mě čeká dlouhá noc a nemám jasno v jedné věci, kterou jsem nevyřešil. Prosím o pomoc.

Mám Xml soubor s obsahem:

Kód: [Vybrat]
<?xml version="1.0" encoding="UTF-8"?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">

    <session-factory>

      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>

      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>

      <property name="connection.connection_string">Server=.\SQLEXPRESS;Database=EvalDB;User=SYSDBA;Password=masterkey;Integrated Security=True;</property>

      <property name="show_sql">false</property>

   </session-factory>

</hibernate-configuration>

a chtěl jsem pomocí následujícího kódu vyparsovat:

Kód: [Vybrat]
            XmlDocument doc = new XmlDocument();
            doc.Load("test.xml");

            XmlNode xmlNode = doc.SelectSingleNode("/hibernate-configuration/session-factory/property[@name = 'connection.connection_string']");

            textBox1.Text = xmlNode.InnerText;

jenže výsledek je null;

Napada Vas prosim něco?

Diky
G.
« Poslední změna: 13. 08. 2015, 08:04:13 od Petr Krčmář »


moneyman

Re:Pomoc při sestavení xml path pro XmlDocument v .NET
« Odpověď #1 kdy: 13. 08. 2015, 02:15:26 »
V .NET nedělám, ale podle MSDN bych tipoval, že ti tam chybí toto.

Kód: [Vybrat]
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
 nsmgr.AddNamespace("hib", "urn:nhibernate-configuration-2.2");

Xml uzly totiž musíš kvalifikovat.

Koukni se k čemu slouží ten atribut xmlns.

Giovanna

Re:Pomoc při sestavení xml path pro XmlDocument v .NET
« Odpověď #2 kdy: 13. 08. 2015, 02:47:44 »
Také jsem nazahálel a nešel řešní na StackOverflow:

Můj současný kód vypadá takhle:

Kód: [Vybrat]
            XmlDocument doc = new XmlDocument();
            doc.Load("test.xml");

            XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
            mgr.AddNamespace("x", "urn:nhibernate-configuration-2.2");

            XmlNode xmlNode = doc.SelectSingleNode("x:hibernate-configuration/session-factory/property[@name = 'connection.connection_string']", mgr);

            textBox1.Text = xmlNode.InnerText;

ale XmlNode je stále null Nevím si rady.

Děláte někdo prosím v .NET?
G.

Re:Pomoc při sestavení xml path pro XmlDocument v .NET
« Odpověď #3 kdy: 13. 08. 2015, 07:16:14 »
Elementy session-factory a property jsou také ve jmenném prostoru urn:nhibernate-configuration-2.2. Takže XPath má být x:hibernate-configuration/x:session-factory/x:property[@name = 'connection.connection_string']