Tôi đang cố thêm các nút mới vào một tệp XML hiện có. tôi có tập tin này với các yếu tố thử nghiệm đầu tiên trong đó:C#, XML, thêm các nút mới
<?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>
tôi đã sử dụng sơ đồ này để tạo này tài liệu 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>
Bây giờ, tôi cần phải thêm nút mới
<profesor>
<ime>test2</ime>
<prezime>test2</prezime>
</profesor>
Tôi đã thử điều này cho đến thời điểm này:
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"));
Tôi cũng đã cố gắng thêm namespace MENAGER với nó:
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmldoc.NameTable);
nsMgr.AddNamespace("ns", xmldoc.NamespaceURI);
XmlNode root = xmldoc.SelectSingleNode("/ns:root/ns:profesori", nsMgr);
và vẫn i Cant chọn nút cha và thêm nút con mới cho nó. Trong chế độ gỡ lỗi "root" đối tượng là null có hoặc không có không gian tên nên cuối cùng tôi khóa học có được một ngoại lệ con trỏ null.
Tôi đang làm gì sai?
P.S. Các lược đồ, không gian tên, tệp xml đều là cục bộ và được viết bởi tôi, nếu điều đó tạo ra sự khác biệt ...
để trả lời, nhưng nút "root" vẫn giữ nguyên l. Tôi đã thử với toàn bộ không gian tên, và bây giờ tôi đã triển khai giải pháp của bạn với "string strNamespace = xmldoc.DocumentElement.NamespaceURI;", nhưng vẫn còn null. – klo
trạng thái mới nhất của bài đăng bị lỗi trong câu trả lời mới – klo
@klo Một vấn đề khác là bạn đang sử dụng "ns: root" thay vì "ns: Root". XML và XPath phân biệt chữ hoa chữ thường. – JLRishe