जोड़ना मैं मौजूदा एक्सएमएल फ़ाइल में नए नोड्स जोड़ने की कोशिश कर रहा हूं। मैं इसे में पहले टेस्ट तत्वों के साथ इस फाइल है:सी #, एक्सएमएल, नए नोड्स
<?xml version="1.0" encoding="utf-8"?>
<Root xmlns="http://prpa.org/XMLSchema1.xsd">
<studenti>
<student>
<ime>test</ime>
<prezime>test</prezime>
<ocijena>0</ocijena>
</student>
</studenti>
<profesori>
<profesor>
<ime>test</ime>
<prezime>test</prezime>
</profesor>
</profesori>
</Root>
मैं इस XML दस्तावेज़
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="XMLSchema1"
targetNamespace="http://prpa.org/XMLSchema1.xsd"
elementFormDefault="qualified"
xmlns="http://prpa.org/XMLSchema1.xsd"
xmlns:mstns="http://prpa.org/XMLSchema1.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name='Root'>
<xs:complexType>
<xs:sequence>
<xs:element name="studenti">
<xs:complexType>
<xs:sequence>
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element name="ime" type="xs:string"/>
<xs:element name="prezime" type="xs:string"/>
<xs:element name="ocijena" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="profesori">
<xs:complexType>
<xs:sequence>
<xs:element name="profesor">
<xs:complexType>
<xs:sequence>
<xs:element name="ime" type="xs:string"/>
<xs:element name="prezime" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
अब उत्पन्न करने के लिए इस स्कीमा इस्तेमाल किया, मैं नए नोड जोड़ने की जरूरत है
<profesor>
<ime>test2</ime>
<prezime>test2</prezime>
</profesor>
मैंने अब तक यह कोशिश की है:
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(Server.MapPath("data/sve.xml"));
XmlNode root = xmldoc.SelectSingleNode("root/profesori", null);
XmlNode prof = xmldoc.CreateNode(XmlNodeType.Element, "profesor", null);
XmlNode ime = xmldoc.CreateNode(XmlNodeType.Element, "ime", null);
ime.InnerText = name;
prof.AppendChild(ime);
XmlNode prezime = xmldoc.CreateNode(XmlNodeType.Element, "prezime", null);
prezime.InnerText = surname;
prof.AppendChild(prezime);
root.AppendChild(prof);
xmldoc.Save(Server.MapPath("data/sve.xml"));
मैं भी इसे करने के लिए नाम स्थान MENAGER जोड़ने की कोशिश की:
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmldoc.NameTable);
nsMgr.AddNamespace("ns", xmldoc.NamespaceURI);
XmlNode root = xmldoc.SelectSingleNode("/ns:root/ns:profesori", nsMgr);
और अभी भी मैं नहीं माता पिता नोड को चुनें और इसे करने के लिए नए चाइल्ड नोड जोड़ें। डीबग मोड में "रूट" ऑब्जेक्ट नामस्थान के साथ या बिना शून्य है, इसलिए अंत में मुझे एक शून्य सूचक अपवाद मिलता है।
मैं क्या गलत कर रहा हूं?
पीएस स्कीमा, नेमस्पेस, एक्सएमएल फाइल सभी स्थानीय हैं और मेरे द्वारा लिखे गए हैं, अगर इससे कोई फर्क पड़ता है ...
उत्तर के लिए ty, लेकिन "रूट" नोड बनी हुई है एल। मैंने पूरे नामस्थान के साथ प्रयास किया था, और अब मैंने आपके समाधान को "स्ट्रिंग strNamespace = xmldoc.DocumentElement.NamespaceURI" के साथ कार्यान्वित किया है, लेकिन अभी भी शून्य है। – klo
नए उत्तर – klo
@klo में बीमार पोस्ट नवीनतम स्थिति एक और समस्या यह है कि आप "एनएस: रूट" के बजाय "ns: root" का उपयोग कर रहे हैं। एक्सएमएल और एक्सपीएथ केस संवेदनशील हैं। – JLRishe