Другие предложили LINQ to XML-решения, которые я бы использовал, если это было возможно.
Если вы застряли в .NET 2.0, используйте XmlDocument
или даже XmlReader
.
Но не пытаются манипулировать Необработанные САМОСТОЯТЕЛЬНО с помощью Substring
и IndexOf
. Используйте XML API описание. В противном случае вы получите . Это вопрос использования правильного инструмента для работы. Правильный анализ 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);
}
}
}
Очевидно, что переберет все на hash
элементов. Если вы хотите только одного, вы можете использовать doc.Descendants("hash").Single()
или doc.Descendants("hash").First()
в зависимости от ваших требований.
Обратите внимание, что как конверсия, которую я использовал здесь, так и свойство Value
, возвратит конкатенацию всех текстовых узлов внутри элемента. Надеюсь, это хорошо для вас - или вы можете получить только первый текстовый узел, который является прямым ребенком, если это необходимо.
работает отлично!спасибо за полное решение – user257412