我已将XML文档加载到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语句但没有成功。
我该怎么做?
答案 0 :(得分:1)
您需要考虑“title”元素的命名空间。试试这个:
string titleText = xeData.Element(XName.Get("title1", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2012-03-14T05:31:16")).Value;
我假设xeData是“标题”元素 - 如果不是,你将不得不弄清楚如何首先选择它。
答案 1 :(得分: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);