-1

我的 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 的东西。

你愿意帮我解决这个问题吗?

4

2 回答 2

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;
}
于 2013-09-25T02:06:08.757 回答
0

这将获得带有 的元素的值colinfoid="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();
于 2013-09-25T01:59:22.130 回答