如何使用XPathNavigator在InforPath C#语言中读取期望节点的值?

时间:2016-02-25 04:05:01

标签: c# infopath xpathnavigator

我正在使用C#语言在Infopath上工作,我尝试了很多时间来获得期望节点的值使用XPathNavigator。但结果并没有像我预期的那样。我有下面的xml脚本:

<my:QuestionText>Container ID</my:QuestionText>
<my:QuestionAnswerTextbox>56456</my:QuestionAnswerTextbox>

我想从两个节点获得两个值:

function GetMobileOperatingSystem() {
var userAgent = navigator.userAgent || navigator.vendor || window.opera;


if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {

    return 'iOS';

}
else if (userAgent.match(/Android/i)) {

    return 'Android';
}
else if(userAgent.match(/Windows Phone/i))
{
    return 'Windows Phone';
}
else if (userAgent.match(/Windows NT/i) && userAgent.match(/Tablet PC/i)) {
    return 'Windows Tablet';
}
else if (userAgent.match(/Windows NT/i)) {
    return 'Windows Desktop';
}
else {
    return 'unknown';
}
}

function OpenNavigation(lat, lon) {
    // If Android device, open coordinates for google navigation
    if (GetMobileOperatingSystem() === 'Android') {
        // window.open("google.navigation:q=35.208707,-80.830739", '_system');
        window.open("google.navigation:q=lat,lon", '_system');
    }
    else if(GetMobileOperatingSystem().match(/Windows/i))
    {
        // window.open("http://maps.google.com/maps?daddr=" + lat + "," + lon);
        window.open("ms-drive-to:?destination.latitude=" + lat + "&destination.longitude=" + lon);
    }


}

您能否告诉我如何做到这一点,如果可以,请指导我或给我另一种方法或解决方案吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

该XML中有重复节点,因此您需要使用XPathNodeIterator和循环来遍历这些节点。试试这个:

XPathNodeIterator auditInformationQuestionsNode = MainDataSource.CreateNavigator().Select("my:AuditQuestions/my:AuditInformationQuestions", NamespaceManager);
foreach (XPathNavigator node in auditInformationQuestions)
{
   string questionTextValue = node.SelectSingleNode("my:QuestionText", NamespaceManager).Value;
   string questionAnswerTextboxValue = node.SelectSingleNode("my:QuestionAnswerTextbox", NamespaceManager).Value;
}

您将在这些变量中获得所需内容:questionTextValue和questionAnswerTextbox。

希望这会有所帮助。

注意:我假设您只提供部分XML,因此您的:AuditInformationQuestions节点的路径可能不同。你需要在那里使用完整路径才能获得它。