小编Mik*_*ike的帖子

如何使用C#中的XmlDocument和XmlNode修改现有的XML文件

我已经实现了在应用程序初始化时使用XmlTextWriter创建下面的XML文件.

并且知道我不知道如何使用XmlDocumentXmlNode更新childNode id值.

是否有一些属性来更新id值?我试过InnerText但是失败了.谢谢.

<?xml version="1.0" encoding="UTF-8"?>
<Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <License licenseId="" licensePath=""/>
  <DataCollections>
    <GroupAIDs>
      <AID id="100">
        <Variable id="200"/>
        <Variable id="201"/>
      </AID>
      <AID id="">
        <Variable id="205"/>
      </AID>
      <AID id="102"/>
    </GroupAIDs>
    <GroupBIDs>
      <BID id="2000">
        <AID id="100"/>
      </BID>
      <BID id="2001">
        <AID id="101"/>
        <AID id="102"/>
      </BID>
    </GroupBIDs>
    <GroupCIDs>
      <BID id="8"/>
      <BID id="9"/>
      <BID id="10"/>
    </GroupCIDs>
  </DataCollections>
</Equipment>
Run Code Online (Sandbox Code Playgroud)

c# xml xmldocument xmlnode

34
推荐指数
1
解决办法
9万
查看次数

XSLT 1.0获取当前日期时间

我的XML文件中有一个包含以下内容的节点:

<Apple>2011-12-01T16:33:33Z</Apple>

我希望采用这一行,并使用与上面所示相同的格式将其替换为当前日期和时间.

YYYY-MM-DDTHH:MM:SSZ

该节点位于声明为'x'的名称空间内

xml xslt xpath datetime

13
推荐指数
2
解决办法
5万
查看次数

没有类型定义的XSD元素的影响

希望这是一个简单的知识问题,但我似乎在其他地方找不到答案。

在以下架构中定义元素会产生什么影响

<xs:element name"FooBar" />
Run Code Online (Sandbox Code Playgroud)

它会允许任何数据类型还是什么都不允许?

xml xsd

5
推荐指数
1
解决办法
1918
查看次数

XSLT 删除一些属性

我有以下 XML,它可以以任一形式出现在我的 XML 文档中:

<Message xsi:schemaLocation="http://www.location.com StructureFile.xsd" xmlns=http://www.thenamespace.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

或者

<Message xmlns="http://www.thenamespace.com">

我需要输出为:

<Message xmlns="http://www.theNEWnamespace.com">

我目前有这个模板来处理两种 xml 可能性的较短版本:

<xsl:template match="*">
  <xsl:element name="{name()}" namespace="http://www.theNEWnamespace.com">
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

但是,这不会删除 xml 的 SchemeLocation 或 xmlns:xsi 部分(如果存在)。

我将如何调整上述内容来处理这两种可能性。

干杯,

编辑:XML结构:

<?xml version="1.0" encoding="utf-8"?>
<Message xsi:schemaLocation="http://www.location.com StructureFile.xsd" xmlns="http://www.thenamespace.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Header>
    <Info></Info>
  </Header>
</Message>
Run Code Online (Sandbox Code Playgroud)

xml xslt

4
推荐指数
1
解决办法
1万
查看次数

具有XSLT 1.0的元素上的多个命名空间

我正在使用微软的XSLT处理器(仅限1.0)

XML开头行:

<?xml version="1.0" encoding="utf-8"?>
<Header xmlns="http:\\OldNameSpace.com">
    <Detail>
Run Code Online (Sandbox Code Playgroud)

使用以下XSLT模板来获取<Header>文档的元素并更改其命名空间.

<xsl:template match="*">
    <xsl:element name="{name()}" xmlns="http:\\NewNameSpace.com"> 
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates />
    </xsl:element>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

果然<Header xmlns="http:\\OldNameSpace.com">进入<Header xmlns="http:\\NewNameSpace.com">

但是我现在需要为此添加第二个命名空间,以便获得以下输出:

<Header xmlns="NewNameSpace.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Run Code Online (Sandbox Code Playgroud)

我尝试过使用:

<xsl:template match="*">
    <xsl:element name="{name()}" xmlns="NewNameSpace.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates />
    </xsl:element>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

但是,我仍然只获得与原始XSLT模板相同的输出.

任何人都可以告诉我为什么这是?

xslt namespaces

3
推荐指数
1
解决办法
5688
查看次数

XDocument使用Lambda查询

我有XML,如下所示

<NodeName Foo="True" Foobar="False" />
<NodeName Foo="False" Foobar="False" />
<NodeName Foo="True" Foobar="False" />
Run Code Online (Sandbox Code Playgroud)

我正在查询这个以使用以下方法找到具有Foo值'True'的NodeName:

.Where(node => node.Attribute("Foo").Value = "True");
Run Code Online (Sandbox Code Playgroud)

但是,属性Foo可能不存在,这会导致异常.

问题是如何实现逻辑来检查属性是否存在,然后检查值是否存在?

我已经尝试了以下但是不确定在else括号中返回什么,因为目前它不会编译错误,不会在所有路径上返回值.

.Where(node =>
            {
                if (node.Attribute("Foo") != null)
                {
                    node.Attribute("Foo").Value == "True";
                }
                else { }
            });
Run Code Online (Sandbox Code Playgroud)

c# xml lambda linq-to-xml

2
推荐指数
1
解决办法
1119
查看次数

标签 统计

xml ×5

xslt ×3

c# ×2

datetime ×1

lambda ×1

linq-to-xml ×1

namespaces ×1

xmldocument ×1

xmlnode ×1

xpath ×1

xsd ×1