C# 在xml中查找头值
这里,我的xml设置如下: 这是通过网络服务实现的C# 在xml中查找头值,c#,xml,linq,datatable,linq-to-xml,C#,Xml,Linq,Datatable,Linq To Xml,这里,我的xml设置如下: 这是通过网络服务实现的 <doc> <str name="data_id">XXXXXXX</str> <str name="data">YYYY</str> <str name="data2">zzzz</str> ... .. <doc> <doc> <str name="data_id">X1X1X1X1X1X1X1</str>
<doc>
<str name="data_id">XXXXXXX</str>
<str name="data">YYYY</str>
<str name="data2">zzzz</str>
...
..
<doc>
<doc>
<str name="data_id">X1X1X1X1X1X1X1</str>
<str name="data">Y1Y1Y1Y1</str>
<str name="data2">z1z1z1z1</str>
...
..
<doc>
加载xmldocument后,我编写了以下代码,用于将整个内容转换为csv字符串
Stream k = r.GetResponse().GetResponseStream();
string csvOut = string.Empty;
var doc = XDocument.Load(k);
StringBuilder sb = new StringBuilder(100000);
DataTable table1 = new DataTable();
foreach (XElement node in doc.Descendants("doc"))
{
foreach (XElement innerNode in node.Elements())
{
sb.AppendFormat("{0},", innerNode.Value);
}
sb.Remove(sb.Length - 1, 1);
sb.AppendLine();
}
csvOut = sb.ToString();
我正在尝试获取标题,如data_id、data等,这里只是一个提示,您应该如何使用XDocument和LINQ
var query = from c in xmlFile.Descendants("doc") select c;
string data_id;
string data;
Datatable dt = new Datatable();
DataRow row;
foreach (XElement dom in query)
{
data_id = dom.Element("data_id").Value;
data = dom.Element("data").Value;
row = dt.NewRow();
row[0] = data_id;
row[1] = data;
dt.Rows.Add(row);
}
这里只是一个提示,提示您应该如何使用XDocument和LINQ
var query = from c in xmlFile.Descendants("doc") select c;
string data_id;
string data;
Datatable dt = new Datatable();
DataRow row;
foreach (XElement dom in query)
{
data_id = dom.Element("data_id").Value;
data = dom.Element("data").Value;
row = dt.NewRow();
row[0] = data_id;
row[1] = data;
dt.Rows.Add(row);
}
这里只是一个提示,提示您应该如何使用XDocument和LINQ
var query = from c in xmlFile.Descendants("doc") select c;
string data_id;
string data;
Datatable dt = new Datatable();
DataRow row;
foreach (XElement dom in query)
{
data_id = dom.Element("data_id").Value;
data = dom.Element("data").Value;
row = dt.NewRow();
row[0] = data_id;
row[1] = data;
dt.Rows.Add(row);
}
这里只是一个提示,提示您应该如何使用XDocument和LINQ
var query = from c in xmlFile.Descendants("doc") select c;
string data_id;
string data;
Datatable dt = new Datatable();
DataRow row;
foreach (XElement dom in query)
{
data_id = dom.Element("data_id").Value;
data = dom.Element("data").Value;
row = dt.NewRow();
row[0] = data_id;
row[1] = data;
dt.Rows.Add(row);
}
如果所有文档都包含完全相同的str
元素集,则可以将列名替换为
var columName = xdoc.Root.Element("doc").Elements("str")
.Select(s => (string)s.Attribute("name"));
它将只读取第一个
节点,而不是遍历xml文档中的所有元素
如果所有文档都包含完全相同的str
元素集,则可以将列名替换为
var columName = xdoc.Root.Element("doc").Elements("str")
.Select(s => (string)s.Attribute("name"));
它将只读取第一个
节点,而不是遍历xml文档中的所有元素
如果所有文档都包含完全相同的str
元素集,则可以将列名替换为
var columName = xdoc.Root.Element("doc").Elements("str")
.Select(s => (string)s.Attribute("name"));
它将只读取第一个
节点,而不是遍历xml文档中的所有元素
如果所有文档都包含完全相同的str
元素集,则可以将列名替换为
var columName = xdoc.Root.Element("doc").Elements("str")
.Select(s => (string)s.Attribute("name"));
这将首先只读
节点,而不是遍历xml文档中的所有元素。首先-您应该提供更多xml。现在还不清楚不同行的数据应该是什么样子。第二,显示你的当前状态attempt@SergeyBerezovskiy当然我已经用细节编辑了我的问题。首先,您应该提供更多的XML。现在还不清楚不同行的数据应该是什么样子。第二,显示你的当前状态attempt@SergeyBerezovskiy当然我已经用细节编辑了我的问题。首先,您应该提供更多的XML。现在还不清楚不同行的数据应该是什么样子。第二,显示你的当前状态attempt@SergeyBerezovskiy当然我已经用细节编辑了我的问题。首先,您应该提供更多的XML。现在还不清楚不同行的数据应该是什么样子。第二,显示你的当前状态attempt@SergeyBerezovskiy当然我已经用细节编辑了我的问题。实际上我想从文档中获取字符串“data\u id”。我的csv中已经有了data_id字段的值。实际上,我想从文档中获取字符串“data_id”。我的csv中已经有了data_id字段的值。实际上,我想从文档中获取字符串“data_id”。我的csv中已经有了data_id字段的值。实际上,我想从文档中获取字符串“data_id”。我的csv中已经有data_id字段的值。谢谢。我明白了。你能告诉我怎样才能掌握linq吗。我目前正在处理很多这样的xml解析,并且遇到了麻烦。Thanks@fuller如果你有很多时间,那么我建议你深入研究Jon的系列还有关于pluralsight的优秀教程我有一个关于我所问问题的后续问题。如果我在xml的数组中有一些元素,而不是像智人一样的str,会怎么样。在只查找str元素之后,是否必须在单独的循环中查找这些元素。或者您是否有一个标准的实现。简而言之,如果doc标记有多种类型的元素,则需要手动处理。您需要读取arr
元素,而不是str
元素来获取列名和查找行值。但您不需要单独的循环,因为在arr
元素中有一个str
元素。只需将值获取为行[(string)arr.Attribute(“name”)]=(string)arr.Element(“str”)代码>谢谢。我明白了。你能告诉我怎样才能掌握linq吗。我目前正在处理很多这样的xml解析,并且遇到了麻烦。Thanks@fuller如果你有很多时间,那么我建议你深入研究Jon的系列还有关于pluralsight的优秀教程我有一个关于我所问问题的后续问题。如果我在xml的数组中有一些元素,而不是像智人一样的str,会怎么样。在只查找str元素之后,是否必须在单独的循环中查找这些元素。或者您是否有一个标准的实现。简而言之,如果doc标记有多种类型的元素,则需要手动处理。您需要读取arr
元素,而不是str
元素来获取列名和查找行值。但您不需要单独的循环,因为在arr
元素中有一个str
元素。只需将值获取为行[(string)arr.Attribute(“name”)]=(string)arr.Element(“str”)代码>谢谢。我明白了。你能告诉我怎样才能掌握linq吗。我目前正在处理很多这样的xml解析,并且遇到了麻烦。Thanks@fuller如果你有很多时间,那么我建议你深入研究Jon的系列还有关于pluralsight的优秀教程我有一个关于我所问问题的后续问题。如果我在xml的数组中有一些元素,而不是像智人一样的str,会怎么样。在只查找str元素之后,是否必须在单独的循环中查找这些元素。或者您是否有一个标准的实现。简而言之,如果doc标记有多种类型的元素,则需要手动处理。您需要读取arr
元素,而不是str
元素来获取列名和查找行值。但您不需要单独的循环,因为在arr
元素中有一个str
元素。只需将值获取为行[(string)arr.Attribute(“name”)]=(string)arr.Element(“str”)代码>谢谢。我明白了。你能告诉我怎样才能掌握linq吗。我目前在一家l