【问题标题】:Finding and replacing values of a tag in XML with c sharp用 c sharp 查找和替换 XML 中标记的值
【发布时间】:2017-11-16 16:15:16
【问题描述】:
<TestCase Name="DEBUG">

<ActionEnvironment Name="Carved records indication">
    <Define Name="_TestedVersionPath"         Value="{CustomParam {paramName=PA tested version installer folder path}, {appName=PA installer}, {hint=\\ptnas1\builds\Temp Builds\Forensic\Physical Analyzer\PA.Test\UFED_Analyzer_17.02.05_03-00_6.0.0.128\EncryptedSetup}}"/>
    <Define Name="_PathOfdata"                Value="SharedData\myfolder\mydata.xml"/>
    <ActionSet Name="DEBUG">    
        <Actions>                                                   
            <SpecialAction ActionName="myactionname">
                <CaseName>123</CaseName>
                <UaeSendQueryValues>
                    <URL>192.168.75.133</URL>
                    <RestURL></RestURL>
                    <UserName>user1</UserName>
                    <Password>aaa</Password>
                    <PathOfQuery>_PathOfdata</PathOfQuery>
                    <Method>GET</Method>
                    <ParamsFromFile></ParamsFromFile>
                </UaeSendQueryValues>                                       
            </SpecialAction>
        </Actions>          
    </ActionSet>    
</ActionEnvironment>    

我有上面的xml。我需要找到每个 PathOfQuery 标记,获取它的文本(在示例中为 _PathOfdata),然后在 xml 树中查找第一个定义标记,其名称 = 到 PathofQuery 标记的文本并获取其值(在示例中“ SharedData\myfolder\mydata.xml")

然后我想用另一个字符串替换那个值。

我需要为 xml 中出现的每个 PathofQuery 标记执行此操作(它可能不止一个),并且我想在我遍历树时始终找到 Define 标记的第一个幻影(可能不止一个)从找到 PathofQuery 标记的位置向上。

我想在 C Sharp 上这样做

任何帮助将不胜感激。

【问题讨论】:

  • 你的问题是什么?
  • SO 问题应该至少显示解决问题和代码清单的最小努力,这将重现程序员无法解决的问题。您的问题似乎是要求 SO 用户在没有任何用户输入的情况下全部完成工作。
  • 我应该使用 LINQ to XML 来完成这项任务吗?
  • 我如何从找到标签的位置向上移动树?

标签: c# xml xelement


【解决方案1】:

假设string s 持有上述Xml。那么以下代码将为您工作:

    XmlDocument xDoc = new XmlDocument();
    xDoc.LoadXml(s);

    XmlNode pathOfQuery = xDoc.SelectSingleNode("//PathOfQuery");
    string pathOfQueryValue = pathOfQuery.InnerText;
    Console.WriteLine(pathOfQueryValue);
    XmlNode define = xDoc.SelectSingleNode("//Define[@Name='" + pathOfQueryValue + "']");
    if(define!=null)
    {
        string defineTagValue = define.Attributes["Value"].Value;
        Console.WriteLine(defineTagValue);

        pathOfQuery.InnerText = defineTagValue;

        Console.WriteLine(pathOfQuery.InnerText);
    }

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2017-02-13
    • 2011-01-07
    • 1970-01-01
    • 2023-03-28
    • 2011-02-16
    相关资源
    最近更新 更多