在 linq 中获取 xml 文件的根元素
Getting the root element of xml file in linq
我正在使用 linq。这是我的文档结构:
<t totalWord="2" creationDate="15.01.2016 02:33:37" ver="1">
<k kel_id="1000">
<kel>7</kel>
<kel_gs>0</kel_gs>
<kel_bs>0</kel_bs>
<km>Ron/INT-0014</km>
<kel_za>10.01.2016 02:28:05</kel_za>
<k_det kel_nit="12" kel_res="4" KelSID="1" >
<kel_ac>ac7</kel_ac>
</k_det>
</k>
<k kel_id="1001">
<kel>whitte down</kel>
<kel_gs>0</kel_gs>
<kel_bs>0</kel_bs>
<km>Ron/INT-0014</km>
<kel_za>15.01.2016 02:33:37</kel_za>
<k_det kel_nit="12" kel_res="4" KelSID="1">
<kel_ac>to gradually make something smaller by making it by taking parts away</kel_ac>
<kel_kc>cut down</kel_kc>
<kel_oc>The final key to success is to turn your interviewer into a champion: someone who is willing to go to bat for you when the hiring committee meets to whittle down the list.</kel_oc>
<kel_trac >adım adım parçalamak</kel_trac>
</k_det>
</k>
</t>
这是一本字典。 t 是根。 k 是单词。当一个新词到达时,totalword 属性和 creationDate 应相应更新。我必须得到 t 节点,得到它的属性并保存它。我写了上面的代码:
XDocument xdoc = XDocument.Load(fileName);
XElement rootElement = xdoc.Root;
XElement kokNode = rootElement.Element("t");
XAttribute toplamSayi = kokNode.Attribute("totalWord");
kokNode 为空。我该如何解决?提前致谢。
试试这个:
string totalword;
foreach (XElement x in xdoc.Descendants("t")){
totalword= x.Attribute("totalword").Value.ToString().Trim(); // Get the totalword attribute's value
}
xdoc.Root
将 return 根元素,在本例中是您的 t
元素。
rootElement.Element("t")
因此 return null
因为 t
没有子 t
元素。
使用xdoc.Root
或xdoc.Element("t")
,即:
var tomplamSayi = xdoc.Root.Attribute("totalWord")
或:
var tomplamSayi = xdoc.Element("t").Attribute("totalWord")
"totalWord" 是根元素 t
的属性,而不是 k
的属性。因此,只需像这样从根元素获取属性:
XDocument xdoc = XDocument.Load(fileName);
XElement rootElement = xdoc.Root;
XAttribute toplamSayi = rootElement.Attribute("totalWord");
我正在使用 linq。这是我的文档结构:
<t totalWord="2" creationDate="15.01.2016 02:33:37" ver="1">
<k kel_id="1000">
<kel>7</kel>
<kel_gs>0</kel_gs>
<kel_bs>0</kel_bs>
<km>Ron/INT-0014</km>
<kel_za>10.01.2016 02:28:05</kel_za>
<k_det kel_nit="12" kel_res="4" KelSID="1" >
<kel_ac>ac7</kel_ac>
</k_det>
</k>
<k kel_id="1001">
<kel>whitte down</kel>
<kel_gs>0</kel_gs>
<kel_bs>0</kel_bs>
<km>Ron/INT-0014</km>
<kel_za>15.01.2016 02:33:37</kel_za>
<k_det kel_nit="12" kel_res="4" KelSID="1">
<kel_ac>to gradually make something smaller by making it by taking parts away</kel_ac>
<kel_kc>cut down</kel_kc>
<kel_oc>The final key to success is to turn your interviewer into a champion: someone who is willing to go to bat for you when the hiring committee meets to whittle down the list.</kel_oc>
<kel_trac >adım adım parçalamak</kel_trac>
</k_det>
</k>
</t>
这是一本字典。 t 是根。 k 是单词。当一个新词到达时,totalword 属性和 creationDate 应相应更新。我必须得到 t 节点,得到它的属性并保存它。我写了上面的代码:
XDocument xdoc = XDocument.Load(fileName);
XElement rootElement = xdoc.Root;
XElement kokNode = rootElement.Element("t");
XAttribute toplamSayi = kokNode.Attribute("totalWord");
kokNode 为空。我该如何解决?提前致谢。
试试这个:
string totalword;
foreach (XElement x in xdoc.Descendants("t")){
totalword= x.Attribute("totalword").Value.ToString().Trim(); // Get the totalword attribute's value
}
xdoc.Root
将 return 根元素,在本例中是您的 t
元素。
rootElement.Element("t")
因此 return null
因为 t
没有子 t
元素。
使用xdoc.Root
或xdoc.Element("t")
,即:
var tomplamSayi = xdoc.Root.Attribute("totalWord")
或:
var tomplamSayi = xdoc.Element("t").Attribute("totalWord")
"totalWord" 是根元素 t
的属性,而不是 k
的属性。因此,只需像这样从根元素获取属性:
XDocument xdoc = XDocument.Load(fileName);
XElement rootElement = xdoc.Root;
XAttribute toplamSayi = rootElement.Attribute("totalWord");