fenmo1 2013-10-09 15:45 采纳率: 0%
浏览 918

asp.net替换xml中的值并输出xml

例:
xml 模板:
<?xml version="1.0" standalone="yes"?>



{Manpower.ID},{Manpower.Name}

{Manpower.Age}
{Manpower.Gender}


{Project.ID}

替换掉所有{*}

问题:
先将xml模板读成string类型,找到所有的{*},但是不知道怎样将{*}替换成想要的值,并将替换值后字符串用xml输出,坐等大神帮忙!!!

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-09-06 17:11
    关注

    该回答引用ChatGPT-3.5,仅为您供参考,不保证完全正确
    你可以使用C#中的string.Replace方法来替换XML模板中的占位符。以下是一个示例代码,演示如何实现这个功能:

    using System;
    using System.Xml;
    
    class Program
    {
        static void Main()
        {
            // 读取XML模板
            string xmlTemplate = @"<?xml version=""1.0"" standalone=""yes""?>
    <Root>
        <ID>{Manpower.ID}</ID>
        <Name>{Manpower.Name}</Name>
        <Age>{Manpower.Age}</Age>
        <Gender>{Manpower.Gender}</Gender>
        <ProjectID>{Project.ID}</ProjectID>
    </Root>";
    
            // 替换占位符
            xmlTemplate = ReplacePlaceholders(xmlTemplate);
    
            // 输出替换后的XML
            Console.WriteLine(xmlTemplate);
        }
    
        static string ReplacePlaceholders(string inputXml)
        {
            // 在这里替换占位符,你可以根据需要自行提供替换的值
            inputXml = inputXml.Replace("{Manpower.ID}", "12345");
            inputXml = inputXml.Replace("{Manpower.Name}", "John Doe");
            inputXml = inputXml.Replace("{Manpower.Age}", "30");
            inputXml = inputXml.Replace("{Manpower.Gender}", "Male");
            inputXml = inputXml.Replace("{Project.ID}", "789");
    
            return inputXml;
        }
    }
    

    这个示例代码首先将XML模板读取为字符串,然后使用ReplacePlaceholders函数来替换占位符。在ReplacePlaceholders函数中,你可以为每个占位符提供实际的值。最后,输出替换后的XML字符串。


    请注意,这只是一个示例,实际应用中,你需要根据你的需求来动态提供要替换的值。


    该回答引用NewBing,仅为您供参考,不保证完全正确
    您可以使用ASP.NET的XmlDocument类来加载、修改和保存XML文件。XmlDocument类提供了一些方法和属性,可以让您轻松地查找和替换XML节点的值。例如,您可以使用SelectNodes或SelectSingleNode方法来根据XPath表达式选择匹配的节点,然后使用InnerText或InnerXml属性来设置或获取节点的值。您也可以使用CreateElement或CreateAttribute方法来创建新的节点,并使用AppendChild或InsertBefore方法来添加或插入节点。最后,您可以使用Save方法来将修改后的XML文档保存到文件或流中。


    下面是一个简单的示例代码,演示了如何使用XmlDocument类来实现您的需求。假设您的XML模板文件名为template.xml,保存在服务器上的某个路径下,您想要替换的值存储在一个名为data的字典中,键为{*}中的内容,值为要替换的内容。代码如下:

    ' 创建一个XmlDocument对象
    Dim doc As New XmlDocument()
    ' 加载XML模板文件
    doc.Load(Server.MapPath("template.xml"))
    ' 获取根节点
    Dim root As XmlNode = doc.DocumentElement
    ' 遍历根节点的所有子节点
    For Each node As XmlNode In root.ChildNodes
        ' 如果子节点是元素节点
        If node.NodeType = XmlNodeType.Element Then
            ' 获取子节点的InnerText属性
            Dim text As String = node.InnerText
            ' 如果InnerText属性包含{*}
            If text.Contains("{") And text.Contains("}") Then
                ' 获取{*}中的内容
                Dim key As String = text.Substring(text.IndexOf("{") + 1, text.IndexOf("}") - text.IndexOf("{") - 1)
                ' 如果data字典中存在该键
                If data.ContainsKey(key) Then
                    ' 将子节点的InnerText属性替换为data字典中对应的值
                    node.InnerText = data(key)
                End If
            End If
        End If
    Next
    ' 保存修改后的XML文档到文件或流中
    doc.Save(Server.MapPath("output.xml"))
    ' 或者 doc.Save(Response.OutputStream)
    

    您可以参考以下链接来了解更多关于XmlDocument类和XML操作的信息:


    源: 与必应的对话, 2023/9/6
    (1) Modifying Nodes, Content, and Values in an XML Document. https://learn.microsoft.com/en-us/dotnet/standard/data/xml/modifying-nodes-content-and-values-in-an-xml-document.
    (2) .net - Replace a value in an XML file - Stack Overflow. https://stackoverflow.com/questions/59387572/replace-a-value-in-an-xml-file.
    (3) XML on the Server - W3Schools. https://www.w3schools.com/xml/xml_server.asp.


    该回答引用文心一言,仅为您供参考,不保证完全正确
    这是一个使用.NET进行XML操作的问题。你可以使用System.Xml命名空间中的类进行操作。


    下面是一个示例代码,展示了如何读取XML模板,替换掉所有的{*},并将结果输出为XML。

    using System;
    using System.Xml;
    
    class Program
    {
        static void Main()
        {
            // 你的XML模板,读取为字符串
            string xmlTemplate = @"<?xml version=""1.0"" standalone=""yes""?>
            <Manpower ID=""{Manpower.ID}"" Name=""{Manpower.Name}"" Age=""{Manpower.Age}"" Gender=""{Manpower.Gender}""/>
            <Project ID=""{Project.ID}"" />";
    
            // 创建一个临时的XML文档,以便我们可以操作它
            XmlDocument tempDoc = new XmlDocument();
            tempDoc.LoadXml(xmlTemplate);
    
            // 定义要替换的值
            string manpowerId = "123";
            string manpowerName = "John Doe";
            string manpowerAge = "30";
            string manpowerGender = "Male";
            string projectId = "456";
    
            // 替换所有的{*}
            ReplaceInXml(tempDoc, manpowerId, "Manpower.ID");
            ReplaceInXml(tempDoc, manpowerName, "Manpower.Name");
            ReplaceInXml(tempDoc, manpowerAge, "Manpower.Age");
            ReplaceInXml(tempDoc, manpowerGender, "Manpower.Gender");
            ReplaceInXml(tempDoc, projectId, "Project.ID");
    
            // 将结果保存为XML字符串
            string xmlResult = tempDoc.OuterXml;
            Console.WriteLine(xmlResult);
        }
    
        // 在XML文档中替换指定标签的值
        static void ReplaceInXml(XmlDocument doc, string newValue, string tagName)
        {
            XmlNode node = doc.SelectSingleNode($"//*[@*[contains(.,'{tagName}')]]", doc.NameTable);
            if (node != null)
            {
                node.InnerText = newValue;
            }
        }
    }
    

    这段代码首先创建了一个临时的XML文档,然后定义了要替换的标签和对应的值。然后,它使用ReplaceInXml方法在XML文档中查找并替换所有匹配的标签。最后,它将修改后的临时文档输出为XML字符串。


    该回答引用讯飞星火,仅为您供参考,不保证完全正确
    你可以使用C#的System.Xml命名空间中的类来实现这个功能。首先,你需要将XML模板读入一个字符串,然后使用XDocument类来解析和修改XML。最后,将修改后的XML输出为字符串。


    以下是一个示例代码:

    using System;
    using System.Xml;
    
    class Program
    {
        static void Main()
        {
            // 读取XML模板
            string xmlTemplate = @"<?xml version=""1.0"" standalone=""yes""?>
    <Manpower>
        <ID>1</ID>
        <Name>张三</Name>
        <Age>30</Age>
        <Gender>男</Gender>
    </Manpower>
    <Project>
        <ID>1001</ID>
    </Project>";
    
            // 解析XML模板
            XDocument xdoc = XDocument.Parse(xmlTemplate);
    
            // 替换值
            int manpowerId = 2;
            string manpowerName = "李四";
            int manpowerAge = 25;
            string manpowerGender = "女";
            int projectId = 1002;
    
            // 查找并替换节点的值
            var manpowerNode = xdoc.Descendants("Manpower").FirstOrDefault();
            if (manpowerNode != null)
            {
                manpowerNode.Element("ID").Value = manpowerId.ToString();
                manpowerNode.Element("Name").Value = manpowerName;
                manpowerNode.Element("Age").Value = manpowerAge.ToString();
                manpowerNode.Element("Gender").Value = manpowerGender;
            }
    
            var projectNode = xdoc.Descendants("Project").FirstOrDefault();
            if (projectNode != null)
            {
                projectNode.Element("ID").Value = projectId.ToString();
            }
    
            // 输出修改后的XML
            Console.WriteLine(xdoc.ToString());
        }
    }
    

    这个示例代码首先读取了一个包含两个节点(Manpower和Project)的简单XML模板。然后,它使用XDocument.Parse方法将XML模板解析为一个XDocument对象。接下来,它查找并替换了Manpower和Project节点的值。最后,它将修改后的XML输出到控制台。

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?