Je travaille avec Linq to Xml pour manipuler des documents openXml. Plus précisément, j'essaie de lire et d'écrire dans les propriétés personnalisées des documents. J'ai actuellement un problème en ajoutant un préfixe sur un XElement. Mon code ressemble:Préfixes Linq to Xml et Namespace
Dim main as XNameSpace = "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"
Dim vt as XNameSpace = "http://schemas.openxmlformats.org/officeDocument2006/docPropsVTypes"
Dim props as XElement = cXDoc.Element(main + "Properties"
props.Add(New XElement(main + "property"), _
New XAttribute("fmtid", formatId), _
New XAttribute("pid", pid + 1), _
New XAttribute("name", "test"), _
New XElement(vt + "lpwstr", "test value")) _
)
Le Xml contenu dans les accessoires avant l'ajout est:
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes" />
Le Xml après l'appel méthode props.add() est:
<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
<property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="test">
<lpwstr xmlns="http://schemas.openxmlformats.org/officeDocument2006/docPropsVTypes">test value</lpwstr>
</property>
</Properties>
Au sein l'élément de propriété que je devrais obtenir
<vt:lpwstr>test value</vt:lpwstr>
mais ne peut tout simplement pas arriver à cela. Je ne veux pas non plus l'attribut xmlns pour cet élément. Je pense que je dois d'une manière ou d'une autre ramener la carte le XNameSpace vt à la déclaration d'espace de noms dans l'élément racine "Properties". Est-ce que quelqu'un a des suggestions?
Salut Jarret, Merci pour le lien. J'ai regardé ce lien et beaucoup d'autres liens similaires. Ce lien concerne C# en particulier. Maintenant, alors que vous vous attendez à ce que la sortie de Linq vers Xml soit exactement la même en C# et Vb.Net, ce n'est pas le cas. Vb.Ne essaie de travailler si vous avez besoin de la déclaration d'espace de nom pour vous. Dans mon cas, je ne sais pas, mais je ne sais pas comment récupérer le contrôle. – Andrew