C# C,xml解析。在标记之间获取数据

C# C,xml解析。在标记之间获取数据,c#,xml,C#,Xml,我有一个字符串: responsestring = "<?xml version="1.0" encoding="utf-8"?> <upload><image><name></name><hash>SOmetext</hash>" 我怎样才能得到两者之间的值 <hash> and </hash> ? 我的尝试: responseString.Substring(responseStr

我有一个字符串:

responsestring = "<?xml version="1.0" encoding="utf-8"?>
<upload><image><name></name><hash>SOmetext</hash>"
我怎样才能得到两者之间的值

<hash> and </hash>
?

我的尝试:

responseString.Substring(responseString.LastIndexOf("<hash>") + 6, 8); // this sort of works , but won't work in every situation.
还尝试过使用xmlreader,但找不到解决方案


ty

var val=XElement.Parse

val.Value…Value

尝试

XDocument doc = XDocument.Parse(str);
var a = from hash in doc.Descendants("hash")
        select hash.Value;

您将需要System.Core和System.Xml.Linq程序集引用

您可以使用xmlreader和/或xpath查询来获取所有所需的数据

其他人建议使用LINQ到XML的解决方案,如果可能的话,我也会使用它

如果您一直使用.NET2.0,请使用XmlDocument甚至XmlReader

但是不要尝试自己使用Substring和IndexOf来操纵原始字符串。使用某种描述的XMLAPI。否则你会弄错的。这是一个为工作使用正确工具的问题。正确解析XML是一项重要的工作——这项工作已经完成

现在,为了让这成为一个完整的答案,这里有一个简短但完整的程序,使用您的示例数据:

using System;
using System.Xml.Linq;

class Test
{
    static void Main()
    {
        string response = @"<?xml version='1.0' encoding='utf-8'?>
<upload><image><name></name><hash>Some text</hash></image></upload>";

        XDocument doc = XDocument.Parse(response);

        foreach (XElement hashElement in doc.Descendants("hash"))
        {
            string hashValue = (string) hashElement;
            Console.WriteLine(hashValue);
        }
    }
}
显然,这将在所有哈希元素上循环。如果您只需要一个,则可以根据您的需求首先使用doc.genderantshash.Single或doc.genderantshash.First


注意,我在这里使用的转换和Value属性都将返回元素中所有文本节点的串联。希望这对您来说没问题,或者您可以只获得第一个文本节点,如果需要,它是一个直接的子节点。

使您的xml格式正确,并用反斜杠转义双引号。然后应用以下代码

 XDocument resp = XDocument.Parse("<hash>SOmetext</hash>");

       var r= from element in resp.Elements()
           where element.Name == "hash"
           select element;


    foreach (var item in r)
    {
        Console.WriteLine(item.Value);
    }

XmlReader_Object.ReadToFollowinghash


字符串值=XmlReader_Object.ReadInnerXml

你能详细说明一下吗。我对XML完全不熟悉。下面是Vinay的答案。@u有一个漂亮的胡子nx@珍妮。问题和答案应该更漂亮!!