如何从 C# 中的 xml 字符串中获取特定值
How to get specific value from a xml string in c#
我有以下字符串
<SessionInfo>
<SessionID>MSCB2B-UKT3517_f2823910df-5eff81-528aff-11e6f-0d2ed2408332</SessionID>
<Profile>A</Profile>
<Language>ENG</Language>
<Version>1</Version>
</SessionInfo>
现在我想获取 SessionID 的 value。我尝试了以下..
var rootElement = XElement.Parse(output);//output means above string and this step has values
但是在这里,
var one = rootElement.Elements("SessionInfo");
没有work.what我可以这样做吗。
并且如果 xml 字符串像 below.can 我们使用相同的字符串来获取 sessionID
<DtsAgencyLoginResponse xmlns="DTS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="DTS file:///R:/xsd/DtsAgencyLoginMessage_01.xsd">
<SessionInfo>
<SessionID>MSCB2B-UKT351ff7_f282391ff0-5e81-524548a-11eff6-0d321121e16a</SessionID>
<Profile>A</Profile>
<Language>ENG</Language>
<Version>1</Version>
</SessionInfo>
<AdvisoryInfo />
</DtsAgencyLoginResponse>
请不要手动执行此操作。这太可怕了。使用 .NET 内置的东西使其更简单、更可靠
这是正确的做法。您创建 类 并让它们从 XML 字符串自动序列化。
rootElement
已经引用了 <SessionInfo>
元素。试试这个方法:
var rootElement = XElement.Parse(output);
var sessionId = rootElement.Element("SessionID").Value;
可以通过xpathselect节点然后获取值:
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<SessionInfo>
<SessionID>MSCB2B-UKT3517_f2823910df-5eff81-528aff-11e6f-0d2ed2408332</SessionID>
<Profile>A</Profile>
<Language>ENG</Language>
<Version>1</Version>
</SessionInfo>");
string xpath = "SessionInfo/SessionID";
XmlNode node = doc.SelectSingleNode(xpath);
var value = node.InnerText;
试试这个方法:
private string parseResponseByXML(string xml)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
XmlNodeList xnList = xmlDoc.SelectNodes("/SessionInfo");
string node ="";
if (xnList != null && xnList.Count > 0)
{
foreach (XmlNode xn in xnList)
{
node= xn["SessionID"].InnerText;
}
}
return node;
}
您的节点:
xmlDoc.SelectNodes("/SessionInfo");
不同样本
xmlDoc.SelectNodes("/SessionInfo/node/node");
希望对您有所帮助。
我有以下字符串
<SessionInfo>
<SessionID>MSCB2B-UKT3517_f2823910df-5eff81-528aff-11e6f-0d2ed2408332</SessionID>
<Profile>A</Profile>
<Language>ENG</Language>
<Version>1</Version>
</SessionInfo>
现在我想获取 SessionID 的 value。我尝试了以下..
var rootElement = XElement.Parse(output);//output means above string and this step has values
但是在这里,
var one = rootElement.Elements("SessionInfo");
没有work.what我可以这样做吗。
并且如果 xml 字符串像 below.can 我们使用相同的字符串来获取 sessionID
<DtsAgencyLoginResponse xmlns="DTS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="DTS file:///R:/xsd/DtsAgencyLoginMessage_01.xsd">
<SessionInfo>
<SessionID>MSCB2B-UKT351ff7_f282391ff0-5e81-524548a-11eff6-0d321121e16a</SessionID>
<Profile>A</Profile>
<Language>ENG</Language>
<Version>1</Version>
</SessionInfo>
<AdvisoryInfo />
</DtsAgencyLoginResponse>
请不要手动执行此操作。这太可怕了。使用 .NET 内置的东西使其更简单、更可靠
这是正确的做法。您创建 类 并让它们从 XML 字符串自动序列化。
rootElement
已经引用了 <SessionInfo>
元素。试试这个方法:
var rootElement = XElement.Parse(output);
var sessionId = rootElement.Element("SessionID").Value;
可以通过xpathselect节点然后获取值:
XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<SessionInfo>
<SessionID>MSCB2B-UKT3517_f2823910df-5eff81-528aff-11e6f-0d2ed2408332</SessionID>
<Profile>A</Profile>
<Language>ENG</Language>
<Version>1</Version>
</SessionInfo>");
string xpath = "SessionInfo/SessionID";
XmlNode node = doc.SelectSingleNode(xpath);
var value = node.InnerText;
试试这个方法:
private string parseResponseByXML(string xml)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
XmlNodeList xnList = xmlDoc.SelectNodes("/SessionInfo");
string node ="";
if (xnList != null && xnList.Count > 0)
{
foreach (XmlNode xn in xnList)
{
node= xn["SessionID"].InnerText;
}
}
return node;
}
您的节点:
xmlDoc.SelectNodes("/SessionInfo");
不同样本
xmlDoc.SelectNodes("/SessionInfo/node/node");
希望对您有所帮助。