如何仅从字符串 xml、c# 中删除第一个标记

本文关键字:删除 第一个 何仅 字符串 xml | 更新日期: 2023-09-27 18:30:28

我正在从Web服务获取数据。它返回一个带有xml标记的字符串:

<price>
 <Amount>
      <Amount>100</Amount>
 </Amount>
</price>

现在我只想从这个字符串中删除第一个<Amount>标签。 这意味着我只想要这个

<price>
      <Amount>100</Amount>
</price>

我该怎么做?

这就是我如何获得对字符串的 Web 服务 XML 响应。

string result = "";
string webserviceUrl ="somerl.";
WebClient client = new WebClient();
result = client.DownloadString(webserviceUrl);

如何仅从字符串 xml、c# 中删除第一个标记

这是获取此结构的最简单方法:

var doc = XElement.Load("File1.xml");
var amounts = doc.Elements("Amount").ToList();
amounts.ForEach(x =>
{
    var element = x.Element("Amount");
    x.RemoveNodes();
    x.Value = element.Value;
});

但它完全是硬编码的。将来,您可以使用 XmlSerializer 将 xml 解析为 c# 对象,也可以使用 XSLT 转换,这更合适。

XmlDocument _doc = new XmlDocument();
_doc.LoadXml("<price><Amount><Amount>100</Amount></Amount></price>");
XmlDocument _newXmlDoc = new XmlDocument();
XmlNode _rootNode = _newXmlDoc.CreateElement("price");
_newXmlDoc.AppendChild(_rootNode);
XmlNode _priceNode = _newXmlDoc.CreateElement("Amount");
_priceNode.InnerText = _doc.LastChild.InnerText;
_rootNode.AppendChild(_priceNode);
Console.WriteLine(_newXmlDoc.OuterXml);