2015-10-27 151 views
1

我有XML像下面示出RoadPart和车辆元素:替换XML元素

<RoadPart> 
    <Vehicles> 
     <ConfigurationSummaryListPosition> 
      <ConfigurationSummary>Test name</ConfigurationSummary> 
     </ConfigurationSummaryListPosition> 
    </Vehicles> 
    <Vehicles> 
     <ConfigurationSummaryListPosition> 
      <ConfigurationSummary>Test name</ConfigurationSummary> 
     </ConfigurationSummaryListPosition> 
    </Vehicles> 
    <Vehicles> 
     <ConfigurationSummaryListPosition> 
      <ConfigurationSummary>Test name</ConfigurationSummary> 
     </ConfigurationSummaryListPosition> 
    </Vehicles> 
</RoadPart> 

我有一个可变

var test = @"<DataType> 
       <ConfigurationSummaryListPositionType> 
        <ConfigurationSummaryType> name </ConfigurationSummaryType> 
       </ConfigurationSummaryListPositionType> 
      </DataType> 
      <DataType> 
       <ConfigurationSummaryListPositionType> 
        <ConfigurationSummaryType> Test</ConfigurationSummaryType> 
       </ConfigurationSummaryListPositionType> 
      </DataType>"; 

要替换车辆元件具有可变输出应该如下:

<RoadPart> 
    <DataType> 
     <ConfigurationSummaryListPositionType> 
      <ConfigurationSummaryType> name </ConfigurationSummaryType> 
     </ConfigurationSummaryListPositionType> 
    </DataType> 
    <DataType> 
     <ConfigurationSummaryListPositionType> 
      <ConfigurationSummaryType> Test</ConfigurationSummaryType> 
     </ConfigurationSummaryListPositionType> 
    </DataType> 
</RoadPart> 

帮我看看这个

+1

'“‘+ VAR +’”'可能是不是你要找的答案。 “Vehicles”和“DataType”元素如何相关?或者你应该删除所有'车辆'并添加所有'DataType'元素? –

+0

是的,我想删除所有车辆并添加变量。帮助我在这 –

+0

我们需要一些澄清。是否“测试名称”以任何方式相关,是标签重要的数量,... –

回答

0

为什么不用linq读取xml,通过每个节点重申并更改该节点的值。

var nodes = (from node in document.Descendant("RoadPart") select node); 

其中文档加载的XML文件

var document = XDocument.Load("your xml file path"); 

然后eiterate的foreach节点在文档中这样

foreach (var node in nodes) 
{ 
    // do something 
} 
0

这将返回结果作为System.Xml.Linq.XElement

test = string.Concat("<root>", test, "</root>"); // set dummy root 
XDocument xdoc = XDocument.Parse(test); 

XElement replaced = new XElement("RoadPart", xdoc.Descendants("DataType").Select(e => e)); 

如果你希望将结果保存为一个文件,

using (FileStream fs = new FileStream("{filePath}", FileMode.Create)) 
{ 
    replaced.Save(fs); 
    fs.Close(); 
}