从节点选择的属性中获取节点值
get node value from node selected attribute
我有一个菜鸟问题。我 select 一个节点的属性,我想得到它的子节点值,但我总是得到第一个节点值。
我的 xml:
<Sites>
<Site ID="032">
<Name>
Rome
</Name>
<Code>
---
</Code>
<Visible>
true
</Visible>
</Site>
<Site ID="040">
<Name>
Paris
</Name>
<Code>
---
</Code>
<Visible>
true
</Visible>
<Site>
<Site ID="055">
<Name>
Berlin
</Name>
<Code>
---
</Code>
<Visible>
true
</Visible>
</Site>
</Sites>
我的代码:
XmlDocument xSite = new XmlDocument();
xSite.Load("Data\Site.xml");
XmlNode siteNode = xSite.SelectSingleNode("/Sites/Site[@ID='" + _selectedSite.ID + "']");
string sitenodestr = siteNode.InnerText;
_selectedSite.Code = siteNode.SelectSingleNode("//Code").InnerText.Trim();
_selectedSite.Name = siteNode.SelectSingleNode("//Name").InnerText.Trim();
string visib = siteNode.SelectSingleNode("//Visible").InnerText.Trim();
_selectedSite.Visibility = Convert.ToBoolean(visib);
我检查过,ID 是正确的,而且 siteNode 内容也是正确的,但我总是得到第一个站点的名称(示例中的 rome)。
你能帮帮我吗?
应该不是
siteNode.SelectSingleNode("//Code")...
但是
siteNode.SelectSingleNode("Code")...
这是因为 //Code
Xpath 表达式表示 "All "Code"文档中的元素",但您只需要 siteNode
.
的子项
您编写 siteNode.SelectSingleNode("//Code")
以所有代码节点为目标,而不是 siteNode.SelectSingleNode("Code")
以仅以元素内的代码节点为目标。
我有一个菜鸟问题。我 select 一个节点的属性,我想得到它的子节点值,但我总是得到第一个节点值。 我的 xml:
<Sites>
<Site ID="032">
<Name>
Rome
</Name>
<Code>
---
</Code>
<Visible>
true
</Visible>
</Site>
<Site ID="040">
<Name>
Paris
</Name>
<Code>
---
</Code>
<Visible>
true
</Visible>
<Site>
<Site ID="055">
<Name>
Berlin
</Name>
<Code>
---
</Code>
<Visible>
true
</Visible>
</Site>
</Sites>
我的代码:
XmlDocument xSite = new XmlDocument();
xSite.Load("Data\Site.xml");
XmlNode siteNode = xSite.SelectSingleNode("/Sites/Site[@ID='" + _selectedSite.ID + "']");
string sitenodestr = siteNode.InnerText;
_selectedSite.Code = siteNode.SelectSingleNode("//Code").InnerText.Trim();
_selectedSite.Name = siteNode.SelectSingleNode("//Name").InnerText.Trim();
string visib = siteNode.SelectSingleNode("//Visible").InnerText.Trim();
_selectedSite.Visibility = Convert.ToBoolean(visib);
我检查过,ID 是正确的,而且 siteNode 内容也是正确的,但我总是得到第一个站点的名称(示例中的 rome)。 你能帮帮我吗?
应该不是
siteNode.SelectSingleNode("//Code")...
但是
siteNode.SelectSingleNode("Code")...
这是因为 //Code
Xpath 表达式表示 "All "Code"文档中的元素",但您只需要 siteNode
.
您编写 siteNode.SelectSingleNode("//Code")
以所有代码节点为目标,而不是 siteNode.SelectSingleNode("Code")
以仅以元素内的代码节点为目标。