我有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>
Run Code Online (Sandbox Code Playgroud)
为此,我使用下面的代码 -
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");
Run Code Online (Sandbox Code Playgroud)
但它没有删除完整的节点.输出就像这样 -
<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>
Run Code Online (Sandbox Code Playgroud)
请建议如何从xml中完全删除特定节点?
Jon*_*eet 14
Odd as is sounds, there's no method on XmlNode which will remove that node from the document. You need to ask the node's parent to remove the node:
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");
Run Code Online (Sandbox Code Playgroud)
If you can use LINQ to XML life will be easier though. For example, to remove all ColumnValues nodes you'd just use:
XDocument doc = XDocument.Load(@"C:\CASInputRequest_WOELN_Var1.xml");
doc.Descendants("ColumnValues").Remove();
doc.Save(@"C:\CASInputRequest_WOELN_Var1.xml");
Run Code Online (Sandbox Code Playgroud)
Or just the first one:
XDocument doc = XDocument.Load(@"C:\CASInputRequest_WOELN_Var1.xml");
doc.Descendants("ColumnValues").First().Remove();
doc.Save(@"C:\CASInputRequest_WOELN_Var1.xml");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24001 次 |
| 最近记录: |