C# 如何循环Xelement类并获得以下结果

C# 如何循环Xelement类并获得以下结果,c#,xml,C#,Xml,在C#中使用xelement类的循环,我希望得到以下结果 <data> <description>Cities that I have recently visited.</description> <cities> <city id="1"> <name>Chicago1</name> <state>IN1</state> </city> &

在C#中使用xelement类的循环,我希望得到以下结果

<data>

 <description>Cities that I have recently visited.</description>

 <cities>
  <city id="1">
   <name>Chicago1</name>
   <state>IN1</state>
  </city>

  <city id="2">
   <name>Chicago2</name>
   <state>IN2</state>
  </city>

  <city id="3">
   <name>Chicago3</name>
   <state>IN3</state>
  </city>

 </cities>

 </data>
我得到的

<cities>
  <city id="1">
   <name>Chicago1</name>
   <state>IN1</state>
  </city>
  </cities>

芝加哥1
内
我想要的

<data>

 <description>Cities that I have recently visited.</description>

 <cities>
  <city id="1">
   <name>Chicago1</name>
   <state>IN1</state>
  </city>

  <city id="2">
   <name>Chicago2</name>
   <state>IN2</state>
  </city>

  <city id="3">
   <name>Chicago3</name>
   <state>IN3</state>
  </city>

 </cities>

 </data>

我最近访问过的城市。
芝加哥1
内
芝加哥2
IN2
芝加哥3
在3
按子体检查

XDocument xdoc = XDocument.Load("Xml File Path"); //save that xml in "C:\test.xml "
IEnumerable<XElement> xEle = xdoc.XPathSelectElements("//cities");
   if(xEle !=null)
    {
      foreach(XElement xE in  Xelement.Descendants())
        {
            // here you will get everything ......
         }
     }
XDocument xdoc=XDocument.Load(“Xml文件路径”)//将该xml保存在“C:\test.xml”中
IEnumerable xEle=xdoc.XPathSelectElements(“//城市”);
if(xEle!=null)
{
foreach(XElement.subjects()中的XElement xE)
{
//在这里你会得到一切。。。。。。
}
}

您可以循环查看

好吧,我仍然不知道真正的问题是什么,所以让我们从以下内容开始:

private static void citiesXml()
{
  const string desc = "Cities that I have recently visited.";

  // set up a list of all the different cities
  var list = new List<Tuple<string, string>>();
  list.Add(new Tuple<string, string>("Chicago1", "IN1"));
  list.Add(new Tuple<string, string>("Chicago2", "IN2"));
  list.Add(new Tuple<string, string>("Chicago3", "IN3"));

  var xmlDataStore = new XElement("data", new XElement("description", desc));
  var xmlCities = new XElement("cities");

  // loop through the list of cities and create a XElement for each single one
  for (var i = 0; i < list.Count; i++)
  {
    xmlCities.Add(new XElement("city", 
        new XAttribute("id", i + 1), 
        new XElement("name", list[i].Item1), 
        new XElement("state", list[i].Item2)));
  }

  // add the cities to the data store object
  xmlDataStore.Add(xmlCities);

  Console.WriteLine(xmlDataStore);
  Console.ReadLine();
}
private static void citiesXml()
{
const string desc=“我最近访问过的城市。”;
//列出所有不同城市的名单
var list=新列表();
添加(新元组(“Chicago1”、“IN1”);
添加(新元组(“Chicago2”,“IN2”));
添加(新元组(“Chicago3”、“IN3”);
var xmlDataStore=new-XElement(“数据”,new-XElement(“描述”,desc));
var xmlCities=新XElement(“城市”);
//循环浏览城市列表,并为每个城市创建一个XElement
对于(var i=0;i
这将打印:

<data>
  <description>Cities that I have recently visited.</description>
  <cities>
    <city id="1">
      <name>Chicago1</name>
      <state>IN1</state>
    </city>
    <city id="2">
      <name>Chicago2</name>
      <state>IN2</state>
    </city>
    <city id="3">
      <name>Chicago3</name>
      <state>IN3</state>
    </city>
  </cities>
</data>

我最近访问过的城市。
芝加哥1
内
芝加哥2
IN2
芝加哥3
在3

在我看来,唯一的区别是城市之间没有空行。缺少空行是问题吗?

我不确定这种格式是否有目的,但如果这正是您的目标,它不会增加可读性。一个简单的
xmlDataStore.ToString()
就足够了吗?或者,您真的希望(某些)元素之间有空行吗?或者你到底想解决什么问题?很抱歉!它现在格式化了!我只想显示上面的结果!如上所述!好吧,让我换一种说法。你得到了什么?它与你想要的有什么不同?谢谢你!我不知道怎么了!但这奏效了!我得去看看<代码>静态void Main(字符串[]args){citiesXml();}
<data>
  <description>Cities that I have recently visited.</description>
  <cities>
    <city id="1">
      <name>Chicago1</name>
      <state>IN1</state>
    </city>
    <city id="2">
      <name>Chicago2</name>
      <state>IN2</state>
    </city>
    <city id="3">
      <name>Chicago3</name>
      <state>IN3</state>
    </city>
  </cities>
</data>