C# 如何循环Xelement类并获得以下结果
在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> &
<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>