2009-12-18 79 views

回答

8

XmlTextReader implements IXmlLineInfo - 如果您查看IXmlLineInfo的文檔,它給出了讀取XML文件並報告每個節點位置的示例。

編輯:對於那些說這是無關緊要的,它可能與XML無關 - 但很可能不會對人類。如果您試圖告訴人們在XML中查找特定位的位置,那麼報告行號和位置會非常有幫助。

+0

這很好,但會解決問題,我不想要行號和行位置,我正在查找XML文件中的確切字符位置,不確定是否可以獲取該位置。 –

+0

@Priyank:不,我不敢肯定你可以。 –

+1

您可以通過將文件加載爲文本(使用XmlTextReader.Encoding進行解碼)並計算換行符,從line + column回到字符偏移量。 – bobince

0

您不應該依賴XML文件中的文本位置(任何理智的解析器完全忽略空白)。你可以(也應該)做的是使用XPath來識別你感興趣的節點,然後從這些節點中取出文本。如果您只對文本節點感興趣,那麼查詢「// text()」將抓取所有文本節點。

+0

的問題不是關於提取文本節點,我可以更輕鬆反正做:

SAX用於.NET中描述。 HTML瀏覽器具有InnerText屬性。我不希望文本位置高速修改,XML解析器無法達到我想要的效果。 –

1

閱讀XML的SAX規範(幾乎所有的XML工具都實現這個規範)爲ContentHandler提供了一個定位器,它可以讓你獲得行和字符(列)的編號。 (我錯過了對C#的要求,上面的例子是針對Java的,但我會嘗試找到相應的C#接口)。

事件可能是一串字符。 http://saxdotnet.sourceforge.net/

+0

這個問題指定了C#。 –