gpt4 book ai didi

c# - 如何从 xml 文档中删除特定节点?

转载 作者:数据小太阳 更新时间:2023-10-29 02:15:04 24 4
gpt4 key购买 nike

我有以下 xml 结构。我要删除一个完整的节点<ColumnValues>USD</ColumnValues>

<TableValue>
<Columns>
<ColumnName>Currency</ColumnName>
<ColumnType>String</ColumnType>
<ColumnValues>USD</ColumnValues>
<ColumnValues>USD</ColumnValues>
</Columns>
<Columns>
<ColumnName>Exchange</ColumnName>
<ColumnType>String</ColumnType>
<ColumnValues>US</ColumnValues>
<ColumnValues>US</ColumnValues>
</Columns>
<Columns>
<ColumnName>Ticker</ColumnName>
<ColumnType>String</ColumnType>
<ColumnValues>C</ColumnValues>
<ColumnValues>AAPL</ColumnValues>
</Columns>
</TableValue>

为此,我使用以下代码 -

XmlDocument doc = new XmlDocument();
doc.Load(@"C:\CASInputRequest_WOELN_Var1.xml");
XmlNodeList NodeTradeType = doc.GetElementsByTagName("ColumnValues");
NodeTradeType[0].RemoveAll();
doc.Save(@"C:\CASInputRequest_WOELN_Var1.xml");

但它并没有删除完整的节点。输出是这样的 -

<TableValue>
<Columns>
<ColumnName>Currency</ColumnName>
<ColumnType>String</ColumnType>
<ColumnValues>
</ColumnValues>
<ColumnValues>USD</ColumnValues>
</Columns>
<Columns>
<ColumnName>Exchange</ColumnName>
<ColumnType>String</ColumnType>
<ColumnValues>US</ColumnValues>
<ColumnValues>US</ColumnValues>
</Columns>
<Columns>
<ColumnName>Ticker</ColumnName>
<ColumnType>String</ColumnType>
<ColumnValues>C</ColumnValues>
<ColumnValues>AAPL</ColumnValues>
</Columns>
</TableValue>

请指教,如何从xml中完全删除特定节点?

最佳答案

听起来很奇怪,XmlNode 上没有可以从文档中删除该节点的方法。您需要请求节点的父节点删除该节点:

XmlDocument doc = new XmlDocument();
doc.Load(@"C:\CASInputRequest_WOELN_Var1.xml");
XmlNodeList nodes = doc.GetElementsByTagName("ColumnValues");
XmlNode node = nodes[0];
node.ParentNode.RemoveChild(node);
doc.Save(@"C:\CASInputRequest_WOELN_Var1.xml");

如果您可以使用 LINQ to XML,生活会更轻松。例如,要删除您刚刚使用的所有 ColumnValues 节点:

XDocument doc = XDocument.Load(@"C:\CASInputRequest_WOELN_Var1.xml");
doc.Descendants("ColumnValues").Remove();
doc.Save(@"C:\CASInputRequest_WOELN_Var1.xml");

或者只是第一个:

XDocument doc = XDocument.Load(@"C:\CASInputRequest_WOELN_Var1.xml");
doc.Descendants("ColumnValues").First().Remove();
doc.Save(@"C:\CASInputRequest_WOELN_Var1.xml");

关于c# - 如何从 xml 文档中删除特定节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com