这是输入字符串的一部分,我不能修改它,它总是以这种方式(通过共享内存),但我可以修改后,我把它放入一个字符串当然:
<sys><id>SCPUCLK</id><label>CPU Clock</label><value>2930</value></sys><sys><id>SCPUMUL</id><label>CPU Multiplier</label><value>11.0</value></sys><sys><id>SCPUFSB</id><label>CPU FSB</label><value>266</value></sys>
Run Code Online (Sandbox Code Playgroud)
我用两个都读过它:
String.Concat(
XElement.Parse(encoding.GetString(bytes))
.Descendants("value")
.Select(v => v.Value));
Run Code Online (Sandbox Code Playgroud)
和:
XmlDocument document = new XmlDocument();
document.LoadXml(encoding.GetString(bytes));
XmlNode node = document.DocumentElement.SelectSingleNode("//value");
Console.WriteLine("node = " + node);
Run Code Online (Sandbox Code Playgroud)
但是他们跑步时都有错误; 输入有多个根(有多个根元素引用),我不想分割字符串.
他们以任何方式读取字符串取值<value>
和</value>
不将字符串吐入多个输入之间的值吗?
这不是一个格式良好的XML文档,因此大多数XML工具都无法处理它.
一个例外是XmlReader
.XmlReaderSettings.ConformanceLevel
在MSDN中查找.如果将其设置为ConformanceLevel.Fragment
,则可以XmlReader
使用这些设置创建并使用它来从没有顶级元素的流中读取元素.
您必须编写XmlReader.Read()
用于执行此操作的代码- 您不能只将其提供给XmlDocument
(这需要有一个顶级元素).
例如,
var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var reader = XmlReader.Create(stream, readerSettings))
{
while (reader.Read())
{
using (var fragmentReader = reader.ReadSubtree())
{
if (fragmentReader.Read())
{
var fragment = XNode.ReadFrom(fragmentReader) as XElement;
// do something with fragment
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7070 次 |
最近记录: |