Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在xml中查找头值_C#_Xml_Linq_Datatable_Linq To Xml - Fatal编程技术网

C# 在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>

这里,我的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>
<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