我想學習XPath。這個理論看起來非常簡單,除非它不起作用。使用XPATH訪問XML元素(是:很好的學習xpath的教程)
我試圖讓每一個目標元素
XPathDocument doc = new XPathDocument(sPath);
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expr;
expr = nav.Compile("/doc/file/body/trans-unit/target");
XPathNodeIterator iterator = nav.Select(expr);
while (iterator.MoveNext())
{
XPathNavigator nav2 = iterator.Current.Clone();
sbDoc.Append(nav2.InnerXml);
}
的XML文檔看起來像這樣的內容:
<?xml version="1.0" encoding="UTF-8"?>
<doc version="1.2">
<file original="affiliate.php" source-language="EN-US" target-language="FR-FR" datatype="php">
<header>
<skl>
<external-file href="affiliate.php"/>
</skl>
</header>
<body>
<trans-unit id="tu1">
<source xml:lang="EN-US">Your Program Details</source>
<target xml:lang="FR-FR">Your Program Details</target>
</trans-unit>
<trans-unit id="tu2">
<source xml:lang="EN-US">Status</source>
<target xml:lang="FR-FR">Status</target>
</trans-unit>
這是近詞從一個教程的詞,但我可以」讓它工作。在創建迭代器時,在調試模式下,我可以看到文檔已加載,但迭代器找不到結果並跳過While循環。
我可能在做一些非常愚蠢的事情,但是什麼?
任何人都知道我在哪裏可以找到一個好的,可靠的XPATH教程?
謝謝大家。原來我忽略了這樣一個事實,即有一個命名空間(我在簡化XML代碼時刪除了這個命名空間,因爲我沒有意識到它很重要),並且增加了一個命名空間管理器,代碼工作正常。
我現在正在研究提出的XPATH教程,它們看起來不錯。
謝謝馬丁。你是對的,我在「簡化」XML文件時刪除了原來的一個命名空間,當然,現在它起作用了。 – Sylverdrag 2010-08-06 15:48:00
@Sylverdrag:以及這個答案如何提供您的問題標題**「學習xpath的好教程」**。我認爲你應該編輯它。 – 2010-08-06 20:44:27
@Alejandro:這是一個2合1的問題,我必須把它交給設法發現潛在問題的人,儘管我確實讚揚了好的教程答案。 – Sylverdrag 2010-08-07 02:28:36