我有一个XML文件:
<Root>
<Lv1>
<1_Data_Lv2_1>A1</1_Data_Lv2_1>
<2_Data_Lv2_1>A2</2_Data_Lv2_1>
</Lv1>
<Lv1>
<1_Data_Lv2_1>B1</1_Data_Lv2_1>
<2_Data_Lv2_1>B2</2_Data_Lv2_1>
</Lv1>
</Root>C#
using (var myStream = new IsolatedStorageFileStream("Settings.xml", FileMode.Open, myIsolatedStorage))
{
xdoc = XDocument.Load(myStream);
}
var lv1s = from lv1 in xdoc.Elements("Root")
select new
{
Children = lv1.Descendants("Lv1")
};
foreach (var lv1 in lv1s)
{
foreach (var lv2 in lv1.Children)
{
MessageBox.Show(Convert.ToString(lv2.Value));
}
}我如何获得所有节点lv1 of <1_Data_Lv2_1> == "A1“并写入另一个xml?
发布于 2012-05-08 23:42:39
发布的XML无效,因为节点不能以数字开头,即1_Data_Lv2_1应该是One_Data_Lv2_1,2_Data_Lv2_1应该是Two_Data_Lv2_1。
完成此更改后,可以找到所有One_Data_Lv2_1节点,其值为A1:
var doc = XDocument.Load( myStream );
// find all descendant nodes with a value of A1
var a1s = doc.Root.Descendants( "One_Data_Lv2_1" )
.Where( x => x.Value == "A1" )
foreach( XElement e in a1s )
{
Debug.WriteLine( e.Value );
}若要将查询结果添加到新的XML文档,请执行以下操作:
var doc2 = new XDocument();
var root = new XElement("Root");
var lvl = new XElement( "LvlNew" );
// adding the a1s collection to the lvl node
lvl.Add( a1s );
root.Add( lvl );
doc2.Add( root );如下所示:
<Root>
<LvlNew>
<One_Data_Lv2_1>A1</One_Data_Lv2_1>
</LvlNew>
</Root>https://stackoverflow.com/questions/10501821
复制相似问题