2012-04-18 39 views
0

我已經加載了一個XML文檔轉換成一個XElement考慮的XElement - 查找節點名稱節點文本

它看起來有點像這樣:

<my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-03-14T05:31:16" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-AU"> 
<my:header> 
    <my:item1></my:item1> 
    <my:item2></my:item2> 
    <my:item3></my:item3> 
</my:header> 
<my:header2> 
    <my:title1>Blah</my:title1> 
    <my:title2>Zlib</my:title2> 
    <my:title3>Bleep</my:title3> 
</my:header2> 

所有我想要做的,是搜索「節點名稱「(即」title1「,」title2「,」title3「)的節點文本」(即「Blah」,「Zlib」或「Bleep」)

我試過xeData.Attribute("title1")xeData.Element("title1"), linq聲明沒有成功。

我該怎麼做?

回答

1

您需要考慮「標題」元素的命名空間。試試這個:

string titleText = xeData.Element(XName.Get("title1", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-03-14T05:31:16")).Value; 

我假設這裏xeData是「頭」元素 - 如果沒有的話,你就必須弄清楚如何選擇,第一。

1

如果您想在命名空間中查找或創建節點,它可以幫助使用屬於LINQ to XML的對象,即XNamespace。 下面是一個例子:

XElement myFields = XElement.Load("../../XMLFile3.xml"); 
    XNamespace my = myFields.GetNamespaceOfPrefix("my"); 
    Console.WriteLine(myFields.Element(my + "header2").Element(my + "title1").Value); 

http://msdn.microsoft.com/en-us/library/bb387042.aspx見。