在infopath中读取xml数据的时候用selectSingleNode("/信息_/@价格");死活弄不出来,去掉@就没问题了,结果在读sps中的数据的时候就必须用@,xpath的语法也要求用@,但是为什么读xml就不行,真是郁闷

使用infopath中的xpath来读取sps中的数据var selected=XDocument.DOM.selectSingleNode("//my:编号").text;
使用infopath中的xpath来读取sps中的数据
使用infopath中的xpath来读取sps中的数据    objXml 
= XDocument.GetDOM("(基本信息)");
使用infopath中的xpath来读取sps中的数据    
使用infopath中的xpath来读取sps中的数据    
var price = objXml.selectSingleNode("/dfs:myFields/dfs:dataFields/dfs:基本信息_[@编号='"+selected+"']");
使用infopath中的xpath来读取sps中的数据   
使用infopath中的xpath来读取sps中的数据    
使用infopath中的xpath来读取sps中的数据    
if(price!=null)
使用infopath中的xpath来读取sps中的数据    {
使用infopath中的xpath来读取sps中的数据        
if(price.selectSingleNode('@价格')!=null)
使用infopath中的xpath来读取sps中的数据        {
使用infopath中的xpath来读取sps中的数据        setNodeValue(
"//my:价格",price.selectSingleNode('@价格').text);
使用infopath中的xpath来读取sps中的数据        }
else
使用infopath中的xpath来读取sps中的数据        {
使用infopath中的xpath来读取sps中的数据        setNodeValue(
"//my:价格",'');
使用infopath中的xpath来读取sps中的数据        }
使用infopath中的xpath来读取sps中的数据}

  

读取数据的时候还是抱错,原来少了提取sps数据的命名空间
使用infopath中的xpath来读取sps中的数据    XDocument.GetDOM("(基本信息)").setProperty("SelectionNamespaces",'xmlns:q="http://schemas.microsoft.com/office/infopath/2003/ado/queryFields" xmlns:d="http://schemas.microsoft.com/office/infopath/2003/ado/dataFields" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution"');

同时将提取的数据表示在infopath的文本框中需要:
使用infopath中的xpath来读取sps中的数据function setNodeValue(xpath, value)
使用infopath中的xpath来读取sps中的数据{
使用infopath中的xpath来读取sps中的数据    
var xmlNode = getNode(xpath);
使用infopath中的xpath来读取sps中的数据
使用infopath中的xpath来读取sps中的数据    
if (!xmlNode)
使用infopath中的xpath来读取sps中的数据        
return;
使用infopath中的xpath来读取sps中的数据
使用infopath中的xpath来读取sps中的数据    
// The xsi:nil needs to be removed before we set the value.
使用infopath中的xpath来读取sps中的数据
    if (value != "" && xmlNode.getAttribute("xsi:nil"))
使用infopath中的xpath来读取sps中的数据        xmlNode.removeAttribute(
"xsi:nil");
使用infopath中的xpath来读取sps中的数据
使用infopath中的xpath来读取sps中的数据    
// Setting the value would mark the document as dirty.
使用infopath中的xpath来读取sps中的数据
    // Let's do that if the value has really changed.
使用infopath中的xpath来读取sps中的数据
    if (xmlNode.text != value)
使用infopath中的xpath来读取sps中的数据        xmlNode.text 
= value;
使用infopath中的xpath来读取sps中的数据}
使用infopath中的xpath来读取sps中的数据
function getNode(xpath)
使用infopath中的xpath来读取sps中的数据{
使用infopath中的xpath来读取sps中的数据    
// Both XML node and absolute XPath are allowed.
使用infopath中的xpath来读取sps中的数据
    if (typeof(xpath) == "string")
使用infopath中的xpath来读取sps中的数据        
return XDocument.DOM.selectSingleNode(xpath);
使用infopath中的xpath来读取sps中的数据    
else
使用infopath中的xpath来读取sps中的数据        
return xpath;
使用infopath中的xpath来读取sps中的数据}
使用infopath中的xpath来读取sps中的数据

相关文章:

  • 2021-08-08
  • 2021-12-25
  • 2022-12-23
  • 2022-12-23
  • 2021-05-24
  • 2022-12-23
  • 2021-08-28
猜你喜欢
  • 2022-12-23
  • 2021-06-06
  • 2021-09-20
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-09
相关资源
相似解决方案