如何使用xpath搜索xml文件和显示字符串,并在dgv上显示它们

本文关键字:显示 并在 dgv 字符串 搜索 xpath xml 文件 何使用 | 更新日期: 2023-09-27 18:26:00

我创建了一个c#应用程序,在其中我必须加载.resx文件并在dgv上显示内容,加载.tmx文件并显示字符串的翻译。例如

<body>
    <tu tuid="880">         
        <tuv xmllang="fr-FR">
            <seg>Sélectionner un contact</seg>
        </tuv>
        <tuv xmllang="de-DE">
            <seg>Kontakt auswählen</seg>
        </tuv>
        <tuv xmllang="en-US">
            <seg>Choose Contact</seg>
        </tuv>
        <tuv xmllang="es-ES">
            <seg>Elegir contacto</seg>
        </tuv>
    </tu>

我已经加载了dgv,并在Source列中显示了英文单词。如果dgv中的Source列包含Choose Contact,我必须在Target列中显示Elegir contacto。现在我已经使用了以下代码

XPathDocument doc;
XPathNavigator nav;
XPathExpression strExpression;
XPathNodeIterator iterator;
doc = new XPathDocument(OpenDialog.Filename);
nav = doc.CreateNavigator();
strExpression = "/body/tu[tuv/seg='Choose Contact']/tuv[@xmllang='fr-FR']/seg";
iterator = nav.Select(strExpression);

我被这条线卡住了。我必须在目标列中显示@xmllang值。我该怎么做?

如何使用xpath搜索xml文件和显示字符串,并在dgv上显示它们

我不熟悉XPathDocument,所以我选择了XmlDocument作为这种方法

string givenString = "Choose Contact";
string language = "fr-FR";
XmlDocument doc = new XmlDocument();
string filePath = "sample.xml";
doc.Load(filePath);
string path = "//tuv[seg='" + givenString + "']";
XmlNode rootNode = doc.SelectSingleNode(path).ParentNode.Clone();
string childPath= "//tuv[@xmllang='" + language + "']";
XmlNode node = rootNode.SelectSingleNode(childPath);
Console.WriteLine(node.InnerText);

--SJ

相关文章: