我用XMLReader对象创建了一个对象,这个Stream对象是我之前用XMLWriter对象编写的.
我知道XMLReader对象只是向前,因此我希望能够保存当前的阅读位置,所以我将能够继续从我停止阅读的地方阅读.
可能吗?
我知道它可能很棘手,因为XMLreader读取内存块的大块,所以恢复当前的XML元素读取点可能会有问题.
只有在您确切知道的情况下,请提供建议,具体方法是根据您对此问题的经验.
注意:
1.我只想保存该XMLReader场景的整个对象引用.
2. XMLReaderPosition =读取元素的当前指针,而不是Stream.Position其他东西.
我有一个MemoryStream由Stream类型参数传递的对象
(Stream在C#中是抽象类).
我想克隆他,并创建另一个MemoryStream对象与原始的当前位置的一面,并创建一个新XMLReader的,所以我将能够阅读其内容.
这就是我所做的,它不起作用(调试标有//* - >的行newReader有{None}值)
假设:你在一个方法内并有Stream currentStream参考.
var x = new XmlReaderSettings();
x.IgnoreWhitespace = true;
using (var newMemoryStream = new MemoryStream())
{
stream.CopyTo(newMemoryStream);
using (var newReader = XmlReader.Create(newMemoryStream,x)) //*
{
Doing some stuff...
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个HTML或XML解析器,让一个访问当前元素的偏移/位置中输入字符串或文件.
例如,如果遍历此字符串:
<div>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit</p>
<p>sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
</div>
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来获取每个<p>标签的起始位置(包括空白),这里:7和72.
如果一个PHP解析器原生支持它会很棒(我看过这个SO问题中提到的DOM,XMLReader和其他库,但还没有找到方法)但是否则任何语言/框架都会精细.
注意:与此问题相关,但本地化程度较低.