正在从C#中具有属性的XML中删除元素
本文关键字:XML 删除 元素 属性 | 更新日期: 2023-09-27 18:28:33
我是C#的新手。我正在尝试删除具有属性name="companyKey"的元素
我试图通过以下代码做到这一点:
XElement xml = XElement.Parse(results);
xml.Elements("NewDataSet")
.Attributes("companyKey").Remove();
DataSet ds = new DataSet();
using (var reader = xml.CreateReader())
ds.ReadXml(reader);
但是,它并不排除/删除元素。如有任何帮助/线索,我们将不胜感激。
我用来应用此代码的XML是:
<NewDataSet>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table1">
<xs:complexType>
<xs:sequence>
<xs:element name="companyKey" type="xs:string" minOccurs="0" />
<xs:element name="phoneVisits" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Elements
将只返回当前节点的子元素,而不返回子元素的子元素(也称为子元素)。然后选择并移除属性,而不是元素。由于该子元素和属性不存在,因此您有一个空序列,因此不会删除任何内容。
您要做的是查找元素中包含name属性的所有子代元素。尝试:
XNamespace xs = "http://www.w3.org/2001/XMLSchema"
xml.Descendants(xs + "element")
.Where(x => (string)x.Attribute("name") == "companyKey")
.Remove();