c#和XML:为什么将XMLNS属性设置为所有子节点?
本文关键字:设置 子节点 属性 XMLNS XML 为什么 | 更新日期: 2023-09-27 18:05:57
以下是我的尝试:创建元素:
XmlNode xHeader = xDoc.CreateElement("Customer");
XmlNode xCustomerID = xDoc.CreateElement("Customer_ID", strListName);
XmlNode xName = xDoc.CreateElement("Full_Name");
XmlNode xEmail = xDoc.CreateElement("Email");
XmlNode xHomeAddress = xDoc.CreateElement("Home_Address");
XmlNode xMobileNumber = xDoc.CreateElement("Mobile_Number");
向文档追加节点。
xDoc.DocumentElement.AppendChild(xHeader);
xHeader.AppendChild(xCustomerID);
xCustomerID.AppendChild(xEmail);
xCustomerID.AppendChild(xHomeAddress);
xCustomerID.AppendChild(xMobileNumber);
这是在XML中生成的内容。http://pastebin.com/dNs8Ueiw我希望在Customer_ID的子节点中没有xmlns = "
如果你想要XML:
<Customer_ID xmlns="a">
<Email>
</Email>
<Home_Address>
</Home_Address>
<Mobile_Number>
</Mobile_Number>
</Customer_ID>
…然后您需要确保您的Email
, Home_Address
和Mobile_Number
元素都与您的Customer_ID
元素在同一个名称空间中:
XmlNode xCustomerID = xDoc.CreateElement("Customer_ID", strListName);
XmlNode xEmail = xDoc.CreateElement("Email", strListName);
XmlNode xHomeAddress = xDoc.CreateElement("Home_Address", strListName);
XmlNode xMobileNumber = xDoc.CreateElement("Mobile_Number", strListName);
基本上,您看到的是名称空间默认的结果—除非为元素指定了xmlns=...
,否则它将继承其父元素的名称空间。
(还请注意,如果可以的话,应该使用LINQ to XML——它是一种更令人愉快的XML API,具有更好的名称空间处理。)