2013-01-23 2 views
0
  1. XML 코드 :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. 내가 코드 아래 를 사용하여 하위 노드의 listname 및 view 이름에 대한 값을 가지고,

    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에 대한 객체를 만들려고 했으므로 노드를 사용하십시오. NI는 각 노드의 값을 얻을 수 foreach 루프를 사용하지만,이에 또한 YAxisFields 및 하위 노드로 부모 노드 을 가지고 있기 때문에 YAxisField 그래서 유일한 방법은하는 XMLNode에 대한 객체의 수를 만들 에있는 한 YAxisFields/YAxisField에 대한 값을 얻을 couldnt한다 아니면 을 수행 할 다른 방법이 있습니까?

    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

있습니까? 일반적으로 이전 API보다 간단합니다 ... (당신이하려는 것을 분명히하지는 않습니다 ...) –

+0

이 태그가 라인 # 2의 시작 태그와 일치하지 않는 방식으로 XML이 유효하지 않습니다. '< ChartConfig>' – MethodMan

답변

1

이 같은 XML하여 XDocument에 사용 Linq에, : 대신 XML에 LINQ를 사용할 수

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