繁体   English   中英

如何获取xml中多个子节点的值?

[英]How to get the value for multiple subnode in xml?

  1. xml代码:

      <Report> <ChartData> <ListName>area</ListName> <ViewName>Selecte List</ViewName> <YAxisFields> <YAxisField> <Name>Scheduled Start Date/Time</Name> <DataType>DateTime</DataType> <Category>Year</Category> </YAxisField> </YAxisFields> <XAxisFields> <XAxisField> <Name>Release Type</Name> <DataType>String</DataType> <Category> </Category> </XAxisField> </XAxisFields> </ChartConfig> </Report> 
  2. 通过使用以下代码,我得到了子节点列表名和视图名的值,

      XmlDocument doc = new XmlDocument(); doc.Load("XmlFileName"); XmlNodeList node = doc.SelectNodes("Report/ChartData"); foreach (XmlNode xn in node) { xn["ListName"].InnerXml = chartname; xn["ViewName"].InnerXml = SelectedList; **xn["YAxisFields/YAxisField"].InnerXml = yaxisfield; //not working, need to get the value for this xml node,need help in this line dono how to proceed** doc.Save("XmlFilename"); } 
  3. 首先,我尝试使用这样的代码而不是上面的代码,在此方法中,我需要创建多个对象以获取每个节点的值,因此我尝试通过为xmlnodelist创建对象来进行尝试,然后使用foreach循环获取每个节点的值但是在这种情况下,无法获得YAxisFields / YAxisField的值,因为它还有父节点作为YAxisFields,子节点作为YAxisField,所以只有一种方法可以为xmlnode创建对象数目,或者还有其他方法可以这样做吗?

      XmlDocument doc = new XmlDocument(); doc.Load("XmlFileName"); XmlNode Listnode = doc.SelectSingleNode("Report/ChartData/ListName"); XmlNode Viewnode = doc.SelectSingleNode("Report/ChartData/ViewName"); if (Listnode != null) { Listnode.InnerXml = chartname; Viewnode.InnerXml = SelectedList; ; doc.Save("XmlFileName"); 

使用Linq来XML XDocument,如下所示:

doc.Root.Descendants("ChartData").ToList().ForEach(node =>
                {
                    node.Element("ListName").Value = chartname;
                    node.Element("ViewName").Value = SelectedList;
                });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM