0
  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");
    
4

1 回答 1

1

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

doc.Root.Descendants("ChartData").ToList().ForEach(node =>
                {
                    node.Element("ListName").Value = chartname;
                    node.Element("ViewName").Value = SelectedList;
                });
于 2013-01-23T07:47:55.057 回答