C# 如何将XML转换为列表<;字符串>;还是字符串[]?
如何将以下XML转换为C# 如何将XML转换为列表<;字符串>;还是字符串[]?,c#,xml,xml-serialization,C#,Xml,Xml Serialization,如何将以下XML转换为列表或字符串[]: <Ids> <id>1</id> <id>2</id> </Ids> 1. 2. 听起来您更多的是在解析之后,而不是完全的XML序列化/反序列化。如果您可以使用LINQ到XML,这非常简单: using System; using System.Linq; using System.Xml.Linq; public class Test { static voi
列表
或字符串[]
:
<Ids>
<id>1</id>
<id>2</id>
</Ids>
1.
2.
听起来您更多的是在解析之后,而不是完全的XML序列化/反序列化。如果您可以使用LINQ到XML,这非常简单:
using System;
using System.Linq;
using System.Xml.Linq;
public class Test
{
static void Main()
{
string xml = "<Ids><id>1</id><id>2</id></Ids>";
XDocument doc = XDocument.Parse(xml);
var list = doc.Root.Elements("id")
.Select(element => element.Value)
.ToList();
foreach (string value in list)
{
Console.WriteLine(value);
}
}
}
使用系统;
使用System.Linq;
使用System.Xml.Linq;
公开课考试
{
静态void Main()
{
字符串xml=“12”;
XDocument doc=XDocument.Parse(xml);
var list=doc.Root.Elements(“id”)
.Select(元素=>element.Value)
.ToList();
foreach(列表中的字符串值)
{
控制台写入线(值);
}
}
}
事实上,调用Elements
可以省略参数,因为只有id
元素,但我想我应该演示如何指定所需的元素
同样,除非我真的需要一个
列表
,否则我通常不会打电话-如果没有它,结果是IEnumerable
,如果只对它进行一次迭代就可以了。要创建数组,请使用。此示例将与.NET framework 3.5一起使用:
System.Xml.Linq.XElement element = System.Xml.Linq.XElement.Parse("<Ids> <id>1</id> <id>2</id></Ids>");
System.Collections.Generic.List<string> ids = new System.Collections.Generic.List<string>();
foreach (System.Xml.Linq.XElement childElement in element.Descendants("id"))
{
ids.Add(childElement.Value);
}
System.Xml.Linq.XElement元素=System.Xml.Linq.XElement.Parse(“12”);
System.Collections.Generic.List id=新的System.Collections.Generic.List();
foreach(System.Xml.Linq.XElement子元素中的childElement子元素。子元素(“id”))
{
Add(childElement.Value);
}
以下是使用XmlDocument的一种方法:
// A string containing the XML data
string xml = "<Ids><id>1</id><id>2</id></Ids>";
// The list you want to fill
ArrayList list = new ArrayList();
XmlDocument doc = new XmlDocument();
// Loading from a XML string (use Load() for file)
doc.LoadXml(xml);
// Selecting node using XPath syntax
XmlNodeList idNodes = doc.SelectNodes("Ids/id");
// Filling the list
foreach (XmlNode node in idNodes)
list.Add(node.InnerText);
//包含XML数据的字符串
字符串xml=“12”;
//您要填写的列表
ArrayList=新建ArrayList();
XmlDocument doc=新的XmlDocument();
//从XML字符串加载(对文件使用Load())
doc.LoadXml(xml);
//使用XPath语法选择节点
XmlNodeList idNodes=doc.SelectNodes(“id/id”);
//填写清单
foreach(idNodes中的XmlNode节点)
添加(node.InnerText);
您可以使用属性类
Properties prop = new Properties();
prop.loadFromXML(stream);
Set set = prop.keySet();
您可以从集合中为每个键访问多个字符串。关键是xml的元素名。下面是一种使用数据集从xml获取类型化数组的方法。(在本例中为双精度数组)
当然,解析双倍并一直将它们转换回字符串可能被某些程序员视为亵渎。。。即使对我来说,也很难不去想这样浪费资源的事。。。但我想有时候最好还是把另一个拒之门外。。不要强调:)将字符串数组转换为xml的代码 items是一个字符串数组
items.Aggregate("", (current, x) => current + ("<item>" + x + "</item>"))
items.Aggregate(“,(当前,x)=>current+(“+x+”)
此示例将与.NET framework 4.0配合使用:
列入清单
List<string> Ids= new List<string>();
Ids= selectedNode.Descendants("Ids").Elements("Id").Select(> x=>x.Value).Where(s =>s!= string.Empty).ToList();
任何类型的集合。 例如:
C:\videotest\file0.txt
C:\videotest\file1.txt
类文件格式
{
公共文件格式(字符串路径)
{
this.path=path;
}
公共字符串完整路径
{
获取{return Path.GetFullPath(Path);}
}
公共字符串文件名
{
获取{return Path.GetFileName(Path);}
}
私有字符串路径;
}
列出文件=
选定节点
.后代(“ID”)
.要素(“Id”)
.选择(x=>newfileformat(x.Value))
.Where(s=>s.FileName!=string.Empty)
.ToList();
这个问题对林克来说太难了:)正如里奇的回答所暗示的,你的回答有些含糊不清。你能说一下你希望清单包含什么吗。有没有可能是ID(“你的例子中的1”和“2”)?你的答案正是我想要的谢谢,虽然我想列出多个答案作为正确答案,但我不能,但你的答案就是我使用的答案。我认为使用ArrayList而不是list会使它与1.x兼容,还有什么东西是2.0或更高版本的吗?真的需要支持1.x吗?与采用2.0和3.x相比,它并不常见。请说明Properties类的全名。它在哪个命名空间中?Properties类表示一组持久的属性。属性可以保存到流中,也可以从流中加载。属性列表中的每个键及其对应的值都是一个字符串。属性列表可以包含另一个属性列表作为其“默认值”;如果在原始属性列表中找不到属性键,则搜索第二个属性列表。
List<string> Ids= new List<string>();
Ids= selectedNode.Descendants("Ids").Elements("Id").Select(> x=>x.Value).Where(s =>s!= string.Empty).ToList();
string[] Ids= thisNode
.Descendants("Ids") // Ids element
.Elements("Id") // Id elements
.Select(x=>x.Value) // XElement to string
.Where(s =>s!= string.Empty) // must be not empty
.ToArray(); // string to string []
class FileFormat
{
public FileFormat(string path)
{
this.path = path;
}
public string FullPath
{
get { return Path.GetFullPath(path); }
}
public string FileName
{
get { return Path.GetFileName(path); }
}
private string path;
}
List<FileFormat> Files =
selectedNode
.Descendants("Ids")
.Elements("Id")
.Select(x => new FileFormat(x.Value))
.Where(s => s.FileName!=string.Empty)
.ToList();