如何在 c# 中替换 xml 开始标记和 xml 结束标记之间的内容?

Posted

技术标签:

【中文标题】如何在 c# 中替换 xml 开始标记和 xml 结束标记之间的内容?【英文标题】:How can I replace something in between xml start tag and xml end tag in c#? 【发布时间】:2020-08-11 08:05:54 【问题描述】:

我有一个xml文件,Body.xml:

<?xml version="1.0" encoding="utf-8"?>
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <MyNumbers xmlns="http://google.com/">
      <number1>1</number1>
      <number2>1</number2>
      <number3>1234</number3>
      <number4>1</number5>
    </MyNumbers>
  </soap12:Body>
</soap12:Envelope>

我想以编程方式从数字列表中更改 number3 标记中的数字。 我怎样才能做到这一点?

谢谢!

【问题讨论】:

【参考方案1】:

MyNumbers 中的默认命名空间发生变化。所以最简单的方法如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;



namespace ConsoleApplication1

    class Program
    
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        
            XDocument doc = XDocument.Load(FILENAME);
            XElement soap = doc.Root;

            XElement number3 = doc.Descendants().Where(x => x.Name.LocalName == "number3").FirstOrDefault();

            number3.SetValue(5678);

        
    


【讨论】:

非常感谢@jdweng!这对我很有帮助。

以上是关于如何在 c# 中替换 xml 开始标记和 xml 结束标记之间的内容?的主要内容,如果未能解决你的问题,请参考以下文章

匹配 XML 字符串的正则表达式在 C# 中具有开始和结束标记

C# 正则表达式:将空格替换为 XML 标记

在 C# 中,如何使用大量精美的标记将 POCO 序列化为 XML?

c#中 如何解决xml格式的字符串中特殊字符

如何在 C# 摘要中包含 html 标记,以便将其作为文本处理(不解析为 XML)?

C#实用教程-操作xml文件