使用 c# 获取 xml 文件中的值的最佳方法是什么
本文关键字:最佳 方法 是什么 获取 xml 文件 使用 | 更新日期: 2023-09-27 18:32:36
我的XML文件如下:
<?xml version="1.0" encoding="euc-kr"?>
<root>
<params>
<param id="ErrorCode" type="STRING">-1</param>
<param id="ErrorMsg" type="STRING">FAIL</param>
</params>
<dataset id="G_HeaderCommon">
<colinfo id="string000" size="128" type="STRING"/>
<record>
<string000>XXXXXXXXXXXXXXXXX</string000>
</record>
</dataset>
<dataset id="G_HeaderStdmsg">
<colinfo id="std_msg_cntn" size="128" type="STRING"/>
<colinfo id="std_msg_code" size="128" type="STRING"/>
<record>
<std_msg_cntn>System error occured.</std_msg_cntn> --> I have to get this value.
<std_msg_code>BL0012</std_msg_code>
</record>
</dataset>
</root>
我想得到"std_msg_cntn"的值。
XPath 或 Linq 会很好。
我不太擅长xml的东西。
你想帮我解决这个问题吗?
string path = @"C:'SomePlace'XMLFile1.xml";
XDocument xDoc = XDocument.Load(path);
var targetDataset = xDoc
.Descendants("dataset")
.Where(a => a.Attribute("id").Value == "G_HeaderStdmsg");
bool datasetHasStdMsgCntn = targetDataset
.Elements("colinfo")
.Where(a => a.Attribute("id").Value == "std_msg_cntn")
.Any();
if (datasetHasStdMsgCntn)
{
var targetElement = targetDataset.Descendants("std_msg_cntn").First();
string stdMsgCntn = targetElement.Value;
}
这将获得元素colinfo
的值与 id="std_msg_cntn"
,在这种特殊情况下,节点为空。
XDocument main = XDocument.Load(@"FilePath");
var result = main.Descendants("root")
.Descendants("dataset").Descendants("colinfo")
.Where(e => e.Attribute("id").Value == "std_msg_cntn")
.Select(e => e.Value).FirstOrDefault();