Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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# XmlReader没有任何内容——是的,我调用了read()等等_C#_.net_Xml_String_Xmlreader - Fatal编程技术网

C# XmlReader没有任何内容——是的,我调用了read()等等

C# XmlReader没有任何内容——是的,我调用了read()等等,c#,.net,xml,string,xmlreader,C#,.net,Xml,String,Xmlreader,我有一个没有太多深度和长度的xml。它包含大约20个键值对。 现在我想读一个特定的值。容易的?好吧,如果XmlReader突然不想再这样做的话: 输入: <?xml version="1.0" encoding="utf-8" ?> <CATALOG> <CD> <TITLE>My test Title</TITLE> </CD> </CATALOG> 结果:字符串为空 第二个测试,xmlCon

我有一个没有太多深度和长度的xml。它包含大约20个键值对。 现在我想读一个特定的值。容易的?好吧,如果XmlReader突然不想再这样做的话:

输入:

<?xml version="1.0" encoding="utf-8" ?>
<CATALOG>
  <CD>
    <TITLE>My test Title</TITLE>
  </CD>
</CATALOG>
结果:字符串为空

第二个测试,xmlConfig是xml as类型字符串:

var reader = XmlReader.Create(new StringReader(xmlConfig));
reader.Read();
string theXmlString = reader.ReadOuterXml();
var reader = XmlReader.Create(new StringReader(xmlConfig));
reader.MoveToAttribute("myAttr");
string theXmlString = reader.ReadInnerXml();
结果:字符串为空

调试显示:读卡器为空。它实际上并不读取字符串

你们有什么想法吗?

请稍后使用.Read()

 while (reader.Read())
 {
       // magic
 }

调用
reader.Read
将移动到下一个节点。因此,当您第一次调用它时,它会移动到您的声明
Use
var values=XDocument.Parse(xml\u file\u string).subjects()。其中(p=>p.Name==“TITLE”)。选择(n=>n.Value).ToList()1)你想读什么?XML声明?还是
元素?2) 该XML中没有名为
“myAttr”
的属性,因此
移动到属性
不会有帮助。从
移动到属性
,您希望发生什么?
reader.Read(); // moves to XML declaration
reader.Read(); // moves to whitespace (new line)
reader.Read(); // moves to CATALOG element
string xml = reader.ReadOuterXml(); // reads all of catalog element
while (reader.Read())
{
    if (reader.NodeType == XmlNodeType.Element)
    {
        // do something
    }
}
var doc = XDocument.Parse(xml);

var title = (string)doc.Descendants("TITLE").Single();