Tag: xml

通过C#将消息放入Websphere MQ与手动放置相同消息的数据长度不同

MQMessage queueMessage = new MQMessage(); queueMessage.WriteString(strInputMsg); queueMessage.Format = MQC.MQFMT_STRING; MQPutMessageOptions queuePutMessageOptions = new MQPutMessageOptions(); Queue.Put(queueMessage, queuePutMessageOptions); 使用C#,使用上面的代码,当我将消息输入队列时,消息的数据长度为3600。 当我通过右键单击队列并选择Put Test Message选项手动将消息输入队列时,消息的数据长度为1799。 我真的很困惑为什么会这样。 两种情况下的消息都是带声明的xml字符串。 在Notepad ++中,有1811个字符,包括声明。 当我在输入队列之前在调试器中查看消息时,消息将转换为xml而不包含任何行或返回的托架。 我使用以下方法创建了xml字符串: //converts string message into xml by serializing it public string GetMessage(MyMessage messageInstance) { // Serialize the request XmlSerializer xsr = new XmlSerializer(typeof(MyMessage)); MemoryStream memoryStream = new MemoryStream(); XmlTextWriter xmlTextWriter […]

C#将根添加到XDocument

我有一个包含XML的字符串,让我们这样说: Cat in hat 12 我想制作一个如下所示的XDocument: Cat in hat 12 我可以使用XDocument doc = XDocument.Parse(xmlString);将xml字符串加载到XDocument中XDocument doc = XDocument.Parse(xmlString); 如何在新根目录下加载文档。 我可以想到用我想要的根创建一个新的XDocument,然后使用for循环将节点添加为子节点,但是有更简单的方法吗?

C#如何在内存对象中执行实时xslt转换?

我有一个带有2个参数的函数:1 = XML文件,2 = XSLT文件,然后执行转换并返回生成的HTML。 这是function: /// /// Will apply an XSLT style to any XML file and return the rendered HTML. /// /// /// The file name of the XML document. /// /// /// The file name of the XSL document. /// /// /// The rendered HTML. /// public string TransformXml(string xmlFileName, string xslFileName) […]

创建没有名称空间声明的XML元素

我尝试将新的“PropertyGroup”元素添加到以下XML文件中 {00AA7ECA-95A0-0000-0000-AD4D2E056BFE} Library Properties testnS testname 4B84E5C0-EC2B-4C0C-8B8E-3FAEB09F74C6 我使用的代码如下(注意还有其他逻辑已被删除): XmlTextReader reader = new XmlTextReader(filename); XmlDocument doc = new XmlDocument(); doc.Load(reader); reader.Close(); XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable); ns.AddNamespace(“x”, “http://schemas.microsoft.com/developer/msbuild/2003”); XmlElement root = doc.DocumentElement; XmlNode refNode = root.SelectSingleNode(“x:Project”, ns); root.SelectSingleNode(“Project”, ns); XmlElement newElement = doc.CreateElement(“PropertyGroup”, “http://schemas.microsoft.com/developer/msbuild/2003”); newElement.InnerXml = “test”; root.InsertAfter(newElement, refNode); doc.Save(filename); 这会在XML文档中生成以下新元素: test 如何摆脱元素上的命名空间声明?

使用XMLdocument添加节点

在下面的XML文档中,我需要附加一个节点 testin one “http:\\www.google.com” “http://clearquest.com/cqweb/” http://www.google.com 问题是我需要同时在adminlinks和genlinks下添加一个名为link的新节点。 这是一段代码 XmlDocument xmldoc = new XmlDocument(); xmldoc.Load(“DashBoard.xml”); XmlNode NodeGen = xmldoc.SelectSingleNode(“DASHBOARD/GENLINKS”); XmlNode NodeAdmin = xmldoc.SelectSingleNode(“DASHBOARD/ADMINLINKS”); XmlNode newLink = xmldoc.CreateNode(XmlNodeType.Element, “LINK”, null); XmlAttribute xa = xmldoc.CreateAttribute(“NAME”); xa.Value = LinkName; newLink.InnerText = Link; newLink.Attributes.Append(xa); NodeGen.AppendChild(newLink); NodeAdmin.AppendChild(newLink); xmldoc.Save(“DashBoard.xml”); 这是在adminlinks下添加链接,但不在genlinks下添加。

使用XML直接签署Office Word文档

我正在尝试使用直接XML格式的C#签署Microsoft Office Word文件。 这里有一些问题和模棱两可的问题,例如: 我应该如何填写摘要值,我应该为每个参考准确消化什么值,以及我应该为每个转换消化什么值? 我应该签署什么价值来创建SignatureValue ? 我应该在x509数据中包含哪些证书以及如何? (我们没有确切的证书,所以我们非常感谢您创建一个证书。) 最后一个问题是我正确地这样做了吗? 也许这里有什么问题,我错过了一个软件包,否则它本身会与openxml文件交互并签名。 但请记住,我实际上是尝试使用外部令牌签署数据,该外部令牌具有可用的pkcs11接口(但没有CSP),所以我使用了PKCS11 Interop库将其迁移到c#,但我在这里仍然有点困惑。 有没有我可以用来签署word文档的包? 或者是否有一个简化openXML交互的软件包? 或者我必须手动完成吗? 只是为了抬头任何执行openXML交互的库也应该允许我使用pkcs11命令对文档进行签名(即,它给我字节流来签名和消化,但是其他部分本身,pkcs11真的不应该被认为是重要的在这里(你可以用我的自定义算法替换它)) BTW中的签名构建器如下所示: YYYY-MM-DDThh:mm:ssTZD 2015-11-22T17:21:28Z TEST SIGNING 10.0 15.0 15.0 1 1920 1080 32 {00000000-0000-0000-0000-000000000000} 9 1 2015-11-22T17:21:28Z E=ali@ali.com, CN=ALI-PC, OU=ALI-PC, O=ALI-PC, L=ALI-PC, S=ALI-PC, C=98 1 http://uri.etsi.org/01903/v1.2.2#ProofOfOrigin Created and approved this document TEST SIGNING

查询XmlDocument而不会得到“未定义名称空间前缀”问题

我有一个Xml文档,它定义和引用一些名称空间。 我将它加载到XmlDocument对象中,据我所知,我创建了一个XmlNamespaceManager对象,用它来查询Xpath。 问题是我得到XPathexception,命名空间“我的”没有定义。 如何让命名空间管理器看到我引用的命名空间已经定义。 或者更确切地说,如何从文档到命名空间管理器获取命名空间定义。 此外,让我感到奇怪的是,您必须首先为文档名称表创建的文档提供命名空间管理器。 即使您需要对手动命名空间进行硬编码,为什么不能将它们直接添加到文档中。 为什么总是必须在每个查询中传递此命名空间管理器? 什么不能XmlDocument只知道? 码: XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(programFiles + @”Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\HfscBookingWorkflow\template.xml”); XmlNamespaceManager ns = new XmlNamespaceManager(xmlDoc.NameTable); XmlNode referenceNode = xmlDoc.SelectSingleNode(“/my:myFields/my:ReferenceNumber”, ns); referenceNode.InnerXml = this.bookingData.ReferenceNumber; XmlNode titleNode = xmlDoc.SelectSingleNode(“/my:myFields/my:Title”, ns); titleNode.InnerXml = this.bookingData.FamilyName; XML: false 更新: ns.AddNamespace(“xsi”, “http://www.w3.org/2001/XMLSchema-instance”); ns.AddNamespace(“xhtml”, “http://www.w3.org/1999/xhtml”); ns.AddNamespace(“xd”, “http://schemas.microsoft.com/office/infopath/2003”); ns.AddNamespace(“my”, “http://schemas.microsoft.com/office/infopath/2003/myXSD/2010-01-15T18:21:55”); 这样做,但这意味着我必须硬编码到这个特定的xml架构。 […]

Linq-to-XML XElement.Remove()会留下不需要的空格

我有一个从字节数组创建的XDocument(通过tcp / ip接收)。 然后我搜索特定的xml节点(XElements),并在通过调用XElement.Remove()从Xdocument中检索值’pop’之后。 在我的所有解析完成后,我希望能够记录我没有解析的xml(XDocument中剩余的xml)。 问题是在调用XElement.Remove()时会留下额外的空格。 我想知道删除这些额外空格的最佳方法,同时保留剩余xml中的其余格式。 示例/示例代码 如果我通过套接字收到以下xml: Gambardella, Matthew XML Developer’s Guide Computer 44.95 2000-10-01 An in-depth look at creating applications with XML. 我使用以下代码来解析此xml并删除一些XElements: private void socket_messageReceived(object sender, MessageReceivedEventArgs e) { XDocument xDoc; try { using (MemoryStream xmlStream = new MemoryStream(e.XmlAsBytes)) using (XmlTextReader reader = new XmlTextReader(xmlStream)) { xDoc = XDocument.Load(reader); } XElement […]

如何使用C#和LINQ在XML内部提取信息?

这是我在StackOverflow上的第一篇文章,所以请耐心等待。 如果我的代码示例有点长,我会提前道歉。 使用C#和LINQ,我试图在更大的XML文件中识别一系列第三级id元素(在本例中为000049)。 每个第三级id都是唯一的,我想要的是基于每个的一系列后代信息。 更具体地说,如果type == A和location type(old) == vault和location type(new) == out ,那么我想选择那个id 。 下面是我正在使用的XML和C#代码。 一般来说我的代码有效。 如下所示,它将返回两次id为000049,这是正确的。 但是,我发现了一个小故障。 如果我删除包含type == A的第一个history块,我的代码仍然会返回两次id为000049,它应该只返回一次。 我知道它为什么会发生,但我无法找到更好的方法来运行查询。 有没有更好的方法来运行我的查询来获得我想要的输出并仍然使用LINQ? 我的XML: 2011 04 22 Friday 15 24 46 0001 customer kit customer kit 000049 2011 04 22 Friday 03 00 02 batch OD vault 0 out 0 0001.kit.000049 2011 04 22 […]

带有属性的列表的XML序列化

我在另一个列表(具有变体的产品)中有一个列表。 我希望父列表上设置属性(只是一个id和一个name )。 期望的输出 1 foo bar 10 现行守则 [XmlRoot( ElementName = “embellishments”, IsNullable = false )] public class EmbellishmentGroup { [XmlArray(ElementName=”type”)] [XmlArrayItem(“row”, Type=typeof(Product))] public List List { get; set; } public EmbellishmentGroup() { List = new List(); List.Add( new Product() { Id = 1, Name = “foo bar”, Cost = 10m } ); } […]