Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向文档添加Xml元素时出现名称空间问题_C#_Xml_Namespaces_Linq To Xml - Fatal编程技术网

C# 向文档添加Xml元素时出现名称空间问题

C# 向文档添加Xml元素时出现名称空间问题,c#,xml,namespaces,linq-to-xml,C#,Xml,Namespaces,Linq To Xml,我试图向文档中添加一个XML元素,但我对名称空间感到非常困惑。 有人能指出我下面做错了什么吗 Xml之前: ... <TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318"> <Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"/> </TaxKeywordTaxHTField

我试图向文档中添加一个XML元素,但我对名称空间感到非常困惑。 有人能指出我下面做错了什么吗

Xml之前:

...
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
    <Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls"/>
</TaxKeywordTaxHTField>
...

TermName
TermId
都位于名称空间
”http://schemas.microsoft.com/office/infopath/2007/PartnerControls“
所以只需将此命名空间添加到它们的名称中即可:

 terms.AddFirst(
    new XElement(ns2 + "TermInfo",
        new XElement(ns2 + "TermName", "Kenya"),
        new XElement(ns2 + "TermId", "283e7636-3eca-4a6c-8ea7-5c1b768b8f2b")));
这将生成以下xml:

<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
  <Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
    <TermInfo>
      <TermName>Kenya</TermName>
      <TermId>283e7636-3eca-4a6c-8ea7-5c1b768b8f2b</TermId>
    </TermInfo>
  </Terms>
</TaxKeywordTaxHTField>

肯尼亚
283e7636-3eca-4a6c-8ea7-5c1b768b8f2b
注意:因此,
TermInfo
与其父元素在同一默认名称空间中,则名称空间只是继承的,而不是显式声明的


还要记住,若您并没有为元素指定名称空间,那个么它就被认为位于名称空间中。但如果父元素已经定义了默认名称空间(由子元素继承),则应该显式声明此空名称空间。这就是为什么您会在输出中看到
xmlns=”“

谢谢。很好的解释。非常感谢。
var terms = DocumentManagment.Descendants(ns4 + "TaxKeywordTaxHTField")
                .Descendants(ns2 + "Terms").SingleOrDefault();
terms.AddFirst(
    new XElement(ns2 + "TermInfo",
        new XElement("TermName", "Kenya"),
        new XElement("TermId", "283e7636-3eca-4a6c-8ea7-5c1b768b8f2b")));
 terms.AddFirst(
    new XElement(ns2 + "TermInfo",
        new XElement(ns2 + "TermName", "Kenya"),
        new XElement(ns2 + "TermId", "283e7636-3eca-4a6c-8ea7-5c1b768b8f2b")));
<TaxKeywordTaxHTField xmlns="e907f980-2644-454c-b5eb-278bd59dc318">
  <Terms xmlns="http://schemas.microsoft.com/office/infopath/2007/PartnerControls">
    <TermInfo>
      <TermName>Kenya</TermName>
      <TermId>283e7636-3eca-4a6c-8ea7-5c1b768b8f2b</TermId>
    </TermInfo>
  </Terms>
</TaxKeywordTaxHTField>