首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将节点保存到另一个文件7

将节点保存到另一个文件7
EN

Stack Overflow用户
提问于 2012-05-08 15:36:53
回答 1查看 303关注 0票数 0

我有一个XML文件:

代码语言:javascript
复制
<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#

代码语言:javascript
复制
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?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 23:42:39

发布的XML无效,因为节点不能以数字开头,即1_Data_Lv2_1应该是One_Data_Lv2_12_Data_Lv2_1应该是Two_Data_Lv2_1

完成此更改后,可以找到所有One_Data_Lv2_1节点,其值为A1:

代码语言:javascript
复制
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文档,请执行以下操作:

代码语言:javascript
复制
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 );

如下所示:

代码语言:javascript
复制
<Root>
  <LvlNew>
    <One_Data_Lv2_1>A1</One_Data_Lv2_1>
  </LvlNew>
</Root>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10501821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档