none
XmlNode.InnerXml ohne Namespace-Ergänzungen RRS feed

  • Frage

  • Hallo,

    ich habe ein in einer XSD Datei beschriebenes XML-Format und erzeuge ein neues XML-Dokument, welches für dieses Beispiel so aussehen soll:

    <?xml version="1.0" standalone="yes"?>
    <MyXML xmlns="http://tempuri.org/MyXML.xsd">
    	<Node1>
    		<SubValue1>1</SubValue>
    		<SubValue2>2</SubValue2>
    	</Node1>
    	<Node2>
    		<Sub>123</Sub>
    	</Node2>
    </MyXML>
    

    Aus diesem Xml möchte ich den Text, welcher den Node1 beschreibt herausziehen, es sollte also ein string mit folgendem Inhalt dabei herauskommen:

    <Node1>
    	<SubValue1>1</SubValue>
    	<SubValue2>2</SubValue2>
    </Node1>

    Leider komme ich da zunächst nicht hin, weil ich statt dem oben beschriebenen bei Node1 eine Angabe mit "xmlns..." habe.
    Der Code hierzu sieht so aus:

    MyXML myXMLwithSomeInfo = new MyXML();
    
    var rowNode1 = myXMLwithSomeInfo.Node1.NewNode1Row();
    rowNode1.SubValue1 =  "1";
    rowNode1.SubValue1 = "2";
    myXMLwithSomeInfo.Node1.Rows.Add(rowNode1);
    
    XmlDocument doc = new XmlDocument();
    
    XmlNamespaceManager xmlnsManager = new XmlNamespaceManager(doc.NameTable);
    xmlnsManager.AddNamespace("MyXML", "http://tempuri.org/MyXML.xsd");
    
    string str = myXMLwithSomeInfo.GetXml();
    // str enthält hiernach:
    //<MyXML xmlns="http://tempuri.org/MyXML.xsd">
    //	<Node1>
    //		<SubValue1>1</SubValue>
    //		<SubValue2>2</SubValue2>
    //	</Node1>
    //	<Node2>
    //		<Sub>123</Sub>
    //	</Node2>
    //</MyXML>
    
    doc.LoadXml(myXMLwithSomeInfo.GetXml());
    XmlElement root = doc.DocumentElement;
    XmlNode node = root.SelectSingleNode("//MyXML:Node1", xmlnsManager);
    string strOfNode = node.OuterXml.ToString();
    // strOfNode enthält hiernach:
    // <Node1 xmlns="http://tempuri.org/MyXML.xsd">
    // 	<SubValue1>1</SubValue>
    // 	<SubValue2>2</SubValue2>
    // </Node1>

    Gibt es einen Weg den Xml-Node ohne die Namespace Angabe zu bekommen oder muss ich diese Nachträglich entfernen?

    Gruß


    - Florian

    Freitag, 17. April 2015 06:57

Antworten

Alle Antworten