- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试查询InfoPath XML文档的附件,但查询无法返回任何节点。我没有使用XmlDocument类的丰富经验。我相信我的问题与命名空间有关。有没有人对此有任何见识。
码
// Get the binary stream of the file
Stream formStream = file.OpenBinaryStream();
// Load the stream into an XPathDocument object
XmlDocument ipForm = new XmlDocument();
ipForm.Load(formStream);
//Create a NameSpaceManager object and add the namespace of the form to it
XmlNamespaceManager ns = new XmlNamespaceManager(ipForm.NameTable);
ns.AddNamespace("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2015-07-13T20:54:32"); //http://schemas.microsoft.com/office/infopath/2003/myXSD/2015-07-13T20:54:32 | http://www.w3.org/XML/1998/namespace
//Get the XML node containing the file attachment
//XmlNode attachmentNode = ipForm.SelectSingleNode("/my:myFields/my:Attachments", ns);
//No nodes returned here
XmlNodeList myNodeList = ipForm.SelectNodes("/my:myFields/my:Attachments", ns);
<?xml version="1.0" encoding="UTF-8"?><?mso-infoPathSolution solutionVersion="1.0.0.830" productVersion="14.0.0" PIVersion="1.0.0.0" href="http://sharepoint.calpine.com/sites/dept/fleetsupport/issues/Issues/Forms/template.xsn" name="urn:schemas-microsoft-com:office:infopath:Issues:-myXSD-2015-03-30T21-16-50" ?><?mso-application progid="InfoPath.Document" versionProgid="InfoPath.Document.3"?><?mso-infoPath-file-attachment-present?><my:myFields xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pc="http://schemas.microsoft.com/office/infopath/2007/PartnerControls" xmlns:ma="http://schemas.microsoft.com/office/2009/metadata/properties/metaAttributes" xmlns:d="http://schemas.microsoft.com/office/infopath/2009/WSSList/dataFields" xmlns:q="http://schemas.microsoft.com/office/infopath/2009/WSSList/queryFields" xmlns:dfs="http://schemas.microsoft.com/office/infopath/2003/dataFormSolution" xmlns:dms="http://schemas.microsoft.com/office/2009/documentManagement/types" xmlns:tns="http://schemas.microsoft.com/sharepoint/soap/" xmlns:s1="http://microsoft.com/wsdl/types/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:ns1="http://microsoft.com/webservices/SharePointPortalServer/UserProfileService" xmlns:ns2="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:ns3="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2015-03-30T21:16:50" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xml:lang="en-us">
<my:InstrumentTag>222</my:InstrumentTag>
<my:IssueDate>2015-07-25</my:IssueDate>
<my:listName>{B6CDAA90-0F94-4127-A50F-D599952B23CD}</my:listName>
<my:strFormName>TestFormName</my:strFormName>
<my:Attachments>
<my:Attachment>/*AttachmentBinary*/</my:Attachment>
</my:Attachments>
<my:Attachments>
<my:Attachment>/*AttachmentBinary*/</my:Attachment>
</my:Attachments>
最佳答案
试试这个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication37
{
class Program
{
const string FILENAME = @"\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var results = doc.Descendants().Where(x => x.Name.LocalName == "myFields").Select(y => new
{
instrumentTag = y.Elements().Where(z => z.Name.LocalName == "InstrumentTag").FirstOrDefault().Value,
issueDate = y.Elements().Where(z => z.Name.LocalName == "IssueDate").FirstOrDefault().Value,
listName = y.Elements().Where(z => z.Name.LocalName == "listName").FirstOrDefault().Value,
strFormName = y.Elements().Where(z => z.Name.LocalName == "strFormName").FirstOrDefault().Value,
Attachments = y.Elements().Where(z => z.Name.LocalName == "Attachments").Select(a => new {
attachment = a.Elements().Where(b => b.Name.LocalName == "Attachment").Select(c => c.Value).FirstOrDefault()
}).ToList(),
}).ToList();
}
}
}
关于c# - XmlDocument.SelectNodes不返回InfoPath XML的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31655856/
我有一个 XmlDocument 并获取对象的字节如下: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("C:\\myxml.xml"); b
我创建了一个具有一个节点的基本 XmlDocument: XmlDocument bigDoc = new XmlDocument(); bigDoc.LoadXml(""); 我得到了另一个 Xml
我刚刚在使用 XmlDocument.LoadXml 时遇到问题。 应用程序崩溃,出现以下错误: "Data at the root level is invalid. Line 1, positio
我想知道执行以下操作的最佳方法是什么: 目录“Input.xml”和“Metadata.xml”中有 2 个 XML 文件。 输入.xml: 1 Test
我使用以下 VB.NET 代码将一些 XML 转换为新的 XML,然后继续处理。这是一次性过程,而不是多次完成的过程,因此据我所知,缓存不会提高效率。 代码有效,但我发现性能问题。我知道性能问题可能与
我有两个 XmlDocuments。像这样的东西: 和 我想将 document2 放在 document1 的内部节点中,这样我最终得到一个包含以下内容的文档:
我已经尝试了一些将新子添加到 XML 文件的代码。我注意到使用 XmlDocument.Load(String filename) 和 XmlDocument.Load(FileStream fs)
当我使用 TXMLDocument 加载 XML 时,元素不包含任何值。我阅读了以下 example file带有元素 TOSL108 ,它确实找到了节点,但它不将其识别为文本元素并且值为空且没有子元
我正在尝试处理 uwp 应用程序中的 xml,我添加了引用和用法: using System.Xml; using System.Xml.XPath; 但是 private XmlDocument d
我试图找出 CreateDocumentType() 在 C# 中的工作原理,虽然我已经找到并阅读了它的 msdn 页面,但我无法让它为我工作。 我只是想在我的 xml 文档中创建这一行: 谁能帮我
我有以下代码: var xmlString = ajaxRequest.responseText.toString(); parser = new DOMParser() doc = parser.p
我相信我的一些使用 XmlDocument 类的代码存在内存泄漏。 我的程序在 Windows 6.1.4 设备 (C#) 上运行并从另一台服务器上的数据库中读取以查看是否需要卸载设备上安装的任何程序
我正在使用流创建 XmlDocument 并在 XmlDocument 中进行一些更改并将 XmlDocument 保存到流本身。 XmlDocument xmlDocument = new XmlD
我想处理 XML 文档,并在 Foundation 包中找到了 XMLDocument 类,这似乎足以满足我的目的。但是我在使用它时遇到了一些问题。我有以下 Swift 代码: import UIKi
我有一堆与 XmlDocument 的空格处理相关的问题.请参阅下面示例中的编号评论。 在混合模式下,所有空格都不应该有意义吗?为什么 a 标签之间的空格不重要? 虽然我知道实际的空白元素仍然是 Xm
我目前必须遍历大量的 .xml 文件,并且绑定(bind)到 Mono(所以没有全新的 .NET LINQ 等)。 我用 XmlDocument加载每个 XML 文件,现在我的问题是,我可以为所有文件
我目前正在使用 Xmldocument 读取一个 xml 文件并写入一些值。我正在阅读的部分看起来像这样: Windows 3
我使用 XmlDocument.Load() 解析从嵌入式资源中读取的 XML 文本。有包含多行的文本元素。我读过 XML 解析器应该规范化换行符,将 CR-LF 对转换为单个 LF 字符。但我发现在
我有一个简单的 c# 函数,它创建一个基本的 XML 文件并保存: private void CreateXMlFile(string Filename, string Name, string Co
为了在SoapException.Detail中返回有用的信息对于 asmx web 服务,我从 WCF 中汲取灵感并创建了一个故障类来包含上述有用信息。然后将该故障对象序列化为所需的 XmlNode
我是一名优秀的程序员,十分优秀!