【问题标题】:How to get the value for multiple subnode in xml?如何获取xml中多个子节点的值?
【发布时间】:2013-01-23 07:33:50
【问题描述】:
  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 to XML 代替吗?它通常比旧的 API 更简单...(也不清楚您要做什么...)
  • 您的 XML 无效,因为此标记与第 2 行的起始标记不匹配 &lt;/ChartConfig&gt;

标签: c# asp.net


【解决方案1】:

使用 Linq to XML XDocument,像这样:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多