【问题标题】:how to save XML fragment?如何保存 XML 片段?
【发布时间】:2011-11-05 08:56:39
【问题描述】:

代码:

    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

谢谢

【问题讨论】:

  • 您希望将整个 XML sn-p 转换为字符串,还是要检索一些节点 - 例如value?如果您正在使用“sys”节点,最好将其保留为 XML,直到您显示/比较值。
  • 您显示的代码部分实际上并没有输出任何东西;它只是读取 xml 并将其存储在一个变量中。您必须给我们生成输出的行...
  • 我改变了第一个帖子:) 再看一遍。
  • 感谢帮助,已解决。

标签: c# xml string var


【解决方案1】:

我猜:

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

【讨论】:

    【解决方案2】:

    显而易见的答案是转换为字符串 -

    var stringFragment = fragment.ToString();
    

    或者,如果需要,

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

    我不是 100% 确定这会实现你想要做的,但它会将你的 XML sn-p 作为字符串返回。

    编辑

    现在问题已经更新,我可以提供更多信息。我假设每个fragment 实际上都是sys 节点。

    您首先需要获取value 节点,然后检索其“值”(即其内容)。

    var valueNode = fragment.Element("value");
    var content = valueNode.Value;
    

    【讨论】:

    • 感谢其他信息,但在 MSDN 周围窥探我发现了如何:reader.ReadToFollowing("value"); port.Write(reader.ReadElementContentAsString() + ",");这是性能方面的最佳方式吗?或者它可能并不重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多