c# - 获取 XML 字符串的价值
问题描述
嗨,我一直在研究这个用 c# 编写的 asp.net webform,我目前正在获取封装在字符串中的 XML 结果的价值。我对 XML 知之甚少,这是我的尝试。
我有这个 XML 字符串
<Code>0</Code>
<responseData>
<LotDetails>
<DEVICE>OH503/E-ICAM</DEVICE>
<DEVICE12NC>340000064194</DEVICE12NC>
<CONTAINERNAME>MBP001012700</CONTAINERNAME>
<PACKAGE>SOT1207</PACKAGE>
</LotDetails>
</responseData>
我需要 <CONTAINERNAME>
在 c# 中获取值我有这个代码
string result = tmpVal.GetQueryResult(System.Configuration.ConfigurationManager.AppSettings["queryname_CMSS"].ToString(), System.Configuration.ConfigurationManager.AppSettings["paramnames_CMSS"].ToString(), LotID).InnerXml.ToString();
XmlDocument doc = new XmlDocument();
doc.LoadXml(result);
XmlNode idNode = doc.SelectSingleNode("//responseData/LotDetails/CONTAINERNAME");
我上面的代码返回一个错误,dditional information: There are multiple root elements. Line 1, position 16.
看起来我没有在我的 XML 结果中获取根元素。有人会帮我解决这个问题吗?先感谢您。希望你明白我的意思。
解决方案
您可以像这样反序列化没有父节点的xml,
XmlDocument doc = new XmlDocument();
doc.LoadXml("<parent>" + result + "</parent>");
//doc.LoadXml($"<parent>{result}</parent>");
XmlNode idNode = doc.SelectSingleNode("//responseData/LotDetails/CONTAINERNAME");
或者,您可以使用一种方法来解析没有父节点的 XML。
推荐阅读
- python - 在 Python 中导出为文本
- matlab - 从 GUI 执行 simulink 时遇到问题,有人知道这是怎么回事吗?
- javascript - ng service-worker 不缓存数据
- python - 生成负数的数学域错误
- javascript - 单击按钮后让 Jest Spec 休眠
- c++ - VS2019 c++ 解决方案 Pre-Build Event 使用 xcopy 在 xcopy 期间创建额外的 dll 文件
- c++ - 将自定义构建步骤的输出添加到项目
- python - SyntaxError:VsCode Python 上的语法无效
- webdriver-io - “BrowserObject”类型上不存在属性“setupInterceptor”
- java - 有没有办法让我在不使用 Java 12 新开关实现的情况下分配这些值之一?