更改XML元素的值

时间:2014-02-21 05:58:22

标签: c# xml

我有项目文件夹中的XML。我正在使用此

加载内容
    XmlDocument doc = new XmlDocument();
    string testFilesLocation = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
    string dataSource;
    string xmlFileName = "Claim.txt";

    if (System.IO.Directory.Exists(testFilesLocation + @"\Resources"))
    {
        dataSource = testFilesLocation + @"\Resources\" + xmlFileName;
    }
    else
    {
        dataSource = testFilesLocation + @"\" + xmlFileName;
    }
    doc.Load(dataSource);

XML具有以下节点

<ClaimKeyInfo>
    <CompanyID>XXXX</CompanyID>
    <ClaimNum>XX-XXXXX-XX<ClaimNum>
</ClaimKeyInfo>   

<ClaimInfo>
    <ClaimNum>XX-XXXXX-XX</ClaimNum>
    <ClaimSensitivityInd>N</ClaimSensitivityInd>
    <ClaimStatus>Open</ClaimStatus>
<ClaimInfo>

我这样做是为了获得ClaimNum元素

    XmlElement root = doc.DocumentElement;
    XmlNodeList elemList = root.GetElementsByTagName("ClaimNum");
    for (int i = 0; i< elemList.Count; i++)
    {
        elemList[i].InnerXml = "YY-YYYYY-YY";
        doc.Save(dataSource);
    }

我确实得到了elemList中的两个元素,但我无法更改其中的值。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用LINQ to XML

var xDoc = XDocument.Load("filePath");
var numbers = xDoc.Descendants("ClaimNum");

foreach(var number in numbers)
{
    // do your work with numbers
    number.Value = "123456";
}

xDoc.Save("filePath");

此处,numbers包含XElements,即ClaimNums。您可以更改Value属性并保存XML文件。如果您需要要获取具体数字,您可以使用Where扩展方法。如果您想了解更多详细信息,请参阅以下文档: