Frage

Wie kann ich die "xmlns: ..." entfernen? Namespace-Informationen von jedem XML-Elemente in C #

War es hilfreich?

Lösung

Zombiesheep des warn Antwort ungeachtet meine Lösung ist die xml mit einem xslt zu waschen verwandeln, dies zu tun.

wash.xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="no" encoding="UTF-8"/>

  <xsl:template match="/|comment()|processing-instruction()">
    <xsl:copy>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="*">
    <xsl:element name="{local-name()}">
      <xsl:apply-templates select="@*|node()"/>
    </xsl:element>
  </xsl:template>

  <xsl:template match="@*">
    <xsl:attribute name="{local-name()}">
      <xsl:value-of select="."/>
    </xsl:attribute>
  </xsl:template>

</xsl:stylesheet>

Andere Tipps

Von hier http://simoncropp.com/working-around-xml-namespaces

var xDocument = XDocument.Parse(
@"<root>
    <f:table xmlns:f=""http://www.w3schools.com/furniture"">
        <f:name>African Coffee Table</f:name>
        <f:width>80</f:width>
        <f:length>120</f:length>
    </f:table>
  </root>");

xDocument.StripNamespace();
var tables = xDocument.Descendants("table");

public static class XmlExtensions
{
    public static void StripNamespace(this XDocument document)
    {
        if (document.Root == null)
        {
            return;
        }
        foreach (var element in document.Root.DescendantsAndSelf())
        {
            element.Name = element.Name.LocalName;
            element.ReplaceAttributes(GetAttributes(element));
        }
    }

    static IEnumerable GetAttributes(XElement xElement)
    {
        return xElement.Attributes()
            .Where(x => !x.IsNamespaceDeclaration)
            .Select(x => new XAttribute(x.Name.LocalName, x.Value));
    }
}

Ich hatte ein ähnliches Problem (um ein Namespace-Attribut von einem bestimmten Elemente zu entfernen, dann wieder die XML als XmlDocument zu BizTalk), aber eine bizarre Lösung.

Bevor Sie die XML-Zeichenfolge in das XmlDocument Objekt laden, habe ich einen Text Ersatz der säumige Namespace-Attribut zu entfernen. Es schien falsch zunächst, wie ich mit XML endete die nicht von dem „XML Visualizer“ in Visual Studio analysiert werden konnte. Das ist, was mich zunächst aus diesem Ansatz setzen.

Allerdings könnte der Text noch in die XmlDocument geladen werden, und ich kann Ausgabe, die es BizTalk in Ordnung.

Beachten Sie auch, dass früher, traf ich eine Sackgasse, wenn man versucht childNode.Attributes.RemoveAll() zu verwenden, um den Namespace-Attribut zu entfernen - es kam gerade wieder

!
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top