как сохранить XML-фрагмент? - PullRequest
0 голосов
/ 28 августа 2011

код:

    var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
        using (var reader = XmlReader.Create(inputz, readerSettings))
        {
            while (reader.Read())
            {
                using (var fragmentReader = reader.ReadSubtree())
                {
                    if (fragmentReader.Read())
                    {
                        var fragment = XNode.ReadFrom(fragmentReader) as XElement;

каков его вывод:

    <sys>
      <id>FSB</id>
      <label>FSB</label>
      <value>266</value>
    </sys>
     <sys>
      <id>CPU</id>
      <label>speed</label>
      <value>2930</value>
    </sys>

как бы я изменил его, чтобы вместо него записывалось "значение" в строку? поэтому вывод выглядит так:, 266,2930

спасибо

Ответы [ 2 ]

1 голос
/ 28 августа 2011

Ну, очевидный ответ - преобразовать в строку -

var stringFragment = fragment.ToString();

или, если необходимо,

var fragment = (XNode.ReadFrom(fragmentReader) as XElement).ToString();

Я не уверен на 100%, что вы достигнете того, что вы 'мы пытаемся это сделать, но он вернет ваш XML-фрагмент в виде строки.

edit

Теперь, когда вопрос обновлен, я могу дать дополнительную информацию.Я предполагаю, что каждый fragment на самом деле является узлом sys.

Сначала вам нужно получить узел value, а затем извлечь его «значение» (то есть его содержимое).

var valueNode = fragment.Element("value");
var content = valueNode.Value;
1 голос
/ 28 августа 2011

Я бы догадался:

 var fragment = (XNode.ReadFrom(fragmentReader)).ToString();
...