C# 在C中创建此XML#
我以前使用过C# 在C中创建此XML#,c#,.net,xml,xmldocument,C#,.net,Xml,Xmldocument,我以前使用过XmlDocument来生成基本的Xml,但是我很难通过代码重新创建以下Xml。主要问题似乎是将名称空间添加到描述部分 如何创建以下示例XML文件 <?xml version="1.0"?> <pndsdc:description xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:
XmlDocument
来生成基本的Xml,但是我很难通过代码重新创建以下Xml。主要问题似乎是将名称空间添加到描述部分
如何创建以下示例XML文件
<?xml version="1.0"?>
<pndsdc:description
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/"
xmlns:pndsterms="http://purl.org/mla/pnds/terms/"
xmlns:pndsdc="http://purl.org/mla/pnds/pndsdc/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://purl.org/mla/pnds/pndsdc/
http://www.ukoln.ac.uk/metadata/pns/pndsdcxml/2005-06-13/xmls/pndsdc.xsd"
>
<dc:identifier encSchemeURI="http://purl.org/dc/terms/URI">http://example.org/my/docs/12345/</dc:identifier>
<dc:title xml:lang="en">Everything you wanted to know about identity, but were afraid to ask</dc:title>
<dc:description xml:lang="en">The article provides a summary of the 2003 White Paper on identity cards for the UK
with a critique from the perspective of several national and international civil liberties organisations.</dc:description>
<dc:subject>Identity cards</dc:subject>
<dc:subject>Civil liberties</dc:subject>
<dc:subject>Human rights</dc:subject>
<dc:type encSchemeURI="http://purl.org/dc/terms/DCMIType" valueURI="http://purl.org/dc/dcmitype/Text">Text</dc:type>
<dcterms:license valueURI="http://creativecommons.org/licenses/by-nc-nd/2.0/uk/" />
<dcterms:rightsHolder>The National Campaign Against Identity Cards</dcterms:rightsHolder>
<dcterms:spatial encSchemeURI="http://purl.org/dc/terms/TGN">World, Europe, United Kingdom</dcterms:spatial>
</pndsdc:description>
http://example.org/my/docs/12345/
你想知道的关于身份的一切,但又不敢问
这篇文章概述了2003年英国身份证白皮书
从几个国家和国际公民自由组织的角度提出批评。
身份证
公民自由
人权
正文
全国反对身份证运动
世界、欧洲、联合王国
代码也可以是 您是否尝试过使用
我想这就是你要找的部分:
XmlTextWriter维护一个名称空间
对应于所有
当前文件中定义的命名空间
元素堆栈。使用XmlTextWriter可以
可以手动声明名称空间
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x", null, "urn:1");
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
上面的C代码生成
跟踪输出。XmlTextWriter
将命名空间声明升级为
根元素来避免它
在两个子元素上重复。
子元素拾取前缀
从名称空间声明
<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</x:root>
你有没有试过使用这个软件
我想这就是你要找的部分:
XmlTextWriter维护一个名称空间
对应于所有
当前文件中定义的命名空间
元素堆栈。使用XmlTextWriter可以
可以手动声明名称空间
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x", null, "urn:1");
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
上面的C代码生成
跟踪输出。XmlTextWriter
将命名空间声明升级为
根元素来避免它
在两个子元素上重复。
子元素拾取前缀
从名称空间声明
<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</x:root>
您需要使用
XmlNamespaceManager
:
XmlDocument document = new XmlDocument();
XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(document.NameTable);
xmlNamespaceManager.AddNamespace("dc","http://purl.org/dc/elements/1.1/");
...
您需要使用
XmlNamespaceManager
:
XmlDocument document = new XmlDocument();
XmlNamespaceManager xmlNamespaceManager = new XmlNamespaceManager(document.NameTable);
xmlNamespaceManager.AddNamespace("dc","http://purl.org/dc/elements/1.1/");
...
不要担心创建名称空间声明。只需确保您创建的每个元素都位于正确的命名空间中。
XmlDocument
将为您创建名称空间声明。因此:
string pdnsdcUri = "http://purl.org/mla/pnds/pndsdc/";
string dcUri = "http://purl.org/dc/elements/1.1/"
...
XmlDocument d = new XmlDocument();
XmlElement description = d.CreateElement("pdnsdc", "description", pdnsdcUri);
d.AddChild(description);
XmlElement identifier = d.CreateElement("dc", "identifier", dcUri);
description.AddChild(identifier);
等等。通常更容易创建一个字典
,其中包含由前缀键入的名称空间,然后执行以下操作:
XmlElement foo = d.CreateElement("prefix", "name", namespaces[prefix]);
不要担心创建名称空间声明。只需确保您创建的每个元素都位于正确的命名空间中。
XmlDocument
将为您创建名称空间声明。因此:
string pdnsdcUri = "http://purl.org/mla/pnds/pndsdc/";
string dcUri = "http://purl.org/dc/elements/1.1/"
...
XmlDocument d = new XmlDocument();
XmlElement description = d.CreateElement("pdnsdc", "description", pdnsdcUri);
d.AddChild(description);
XmlElement identifier = d.CreateElement("dc", "identifier", dcUri);
description.AddChild(identifier);
等等。通常更容易创建一个字典
,其中包含由前缀键入的名称空间,然后执行以下操作:
XmlElement foo = d.CreateElement("prefix", "name", namespaces[prefix]);
如果可以的话,我建议使用LINQtoXML及其XDocument类。使用名称空间创建XML要容易得多。您应该问一个更直接的问题。你已经有什么了?你特别需要解决什么问题?我和Peter在一起,我不知道这里有什么困难,所以除了编写完整的代码来编写上述文档外,还有人如何回答你的问题?如果可以的话,我建议使用Linq to XML及其XDocument类。使用名称空间创建XML要容易得多。您应该问一个更直接的问题。你已经有什么了?你特别需要解决什么问题?我和Peter在一起,我不知道这里有什么困难,所以除了编写完整的代码来编写上面的文档外,还有人如何回答你的问题?没有,但我会试一试。谢谢,您可能想拿起并引用相应的英文msdn文章-这里的大多数人都不会说德语;-)不,但我会试一试。谢谢,您可能想拿起并引用相应的英文msdn文章-这里的大多数人都不会说德语;-)