我的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的东西。
你愿意帮我解决这个问题吗?答案 0 :(得分:1)
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;
}
答案 1 :(得分:0)
这将获得元素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();