2012-10-09 29 views
0

下面是要從中搜索字的xml文件格式。在XML中的一個節點下查找值

<Book> 
<Page id="1"> 
<Head>Preface</Head> 
<Body> 
<Paragraph> 
    <Line> 
     <Word> 
      <Char>T</Char> 
      <Char>h</Char> 
      <Char>i</Char> 
      <Char>s</Char> 
     </Word> 
     <Word> 
      <Char>-</Char> 
     </Word> 
     <Word> 
      <Char>i</Char> 
      <Char>s</Char> 
     </Word> 
     <Word> 
      <Char>-</Char> 
     </Word> 
     <Word> 
      <Char>s</Char> 
      <Char>a</Char> 
      <Char>m</Char> 
      <Char>p</Char> 
      <Char>l</Char> 
      <Char>e</Char> 
     </Word> 
     <Word> 
      <Char>-</Char> 
     </Word> 
     <Word> 
      <Char>t</Char> 
      <Char>e</Char> 
      <Char>x</Char> 
      <Char>t</Char> 
     </Word> 
    </Line> 
</Paragraph> 
</Body> 
</Page> 

我用下面的XPath表達式在C#中找到字符節點的值。

XmlDocument objXmlDoc = new XmlDocument(); 
XmlNodeList objXmlNodeList; 
objXmlDoc.Load(sFilePath); 
objXmlNodeList = objXmlDoc.SelectNodes("//CHAR[translate(text(),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')='" + txtFindText.Text.ToUpper() + "']"); 

這裏,如何從上面的XML文件得到一個完整的XPath單詞?

回答

1

這在理論上是不可能的。原因是XML/XPATH不能確保順序,因爲查詢的結果是一個「節點集」,根據定義,它是「無重複節點的無序集合」。

http://www.w3.org/TR/xpath/

不過,你可以親近的要求。例如,你可以得到的第一個詞:

XmlDocument objXmlDoc = new XmlDocument(); 
XmlNodeList objXmlNodeList; 
objXmlDoc.Load(sFilePath); 
objXmlNodeList = objXmlDoc.SelectNodes("//Word"); 
string s = string.Empty; 
XmlNodeList wordNodes = objXmlNodeList[0].ChildNodes; 
foreach (XmlNode characterNode in wordNodes) 
{ 
    s = s + characterNode.InnerText; 
} 
2

我會用Linq2Xml

XDocument xDoc = XDocument.Parse(xml); //or XDocument.Load(fileName) 
var words = xDoc.Descendants("Word") 
       .Select(w => String.Join("",w.Descendants("Char").Select(c => c.Value))) 
       .ToList(); 

- 編輯 -

爲@ Y.Ecarri

var words2 = xDoc.XPathSelectElements("//Word") 
       .Select(w => String.Join("", w.Elements().Select(c => c.Value))) 
       .ToList(); 
+0

的最佳解決方案,但這不是XPATH –

+0

@LB:嗯,這可能是一個很好的解決方案,但這裏的要求是XPath。順便說一句,謝謝你的時間。 –

+0

@ Itz.Irshad您認爲'XPathSelectElements'是什麼? –

相關問題