我想制作像这样的xml元素:
<ElementName Type="FirstAttribute" Name="SecondAttribute">Value</Atrybut>
现在我这样做了:
XmlNode xmlAtrybutNode = xmlDoc.CreateElement("ElementName ");
_xmlAttr = xmlDoc.CreateAttribute("Type");
_xmlAttr.Value = "FirstAttribute";
xmlAtrybutNode.Attributes.Append(_xmlAttr);
_xmlAttr = xmlDoc.CreateAttribute("Name");
_xmlAttr.Value = "SecondAttribute";
xmlAtrybutNode.Attributes.Append(_xmlAttr);
xmlAtrybutNode.InnerText = !string.IsNullOrEmpty(Value)
? SetTextLength(Name, ValueLength)
: string.Empty;
值是方法中的输入变量。 是否有可能以另一种方式做到这一点? 更有效率? 我可以使用xmlWriter吗?现在我正在使用xmlDocument。
答案 0 :(得分:6)
您可以将Linq用于XML。
基本上
XDocument doc = new XDocument();
doc.Add(
new XElement("ElementName", "Value",
new XAttribute("Type", "FirstAttribute"),
new XAttribute("Name", "SecondAttribute")));
将提供此xml文档
<ElementName Type="FirstAttribute" Name="SecondAttribute">Value</ElementName>
答案 1 :(得分:4)
如何调整现有代码:
XmlElement el = xmlDoc.CreateElement("ElementName");
el.SetAttribute("Type", "FirstAttribute");
el.SetAttribute("Name", "SecondAttribute");
el.InnerText = ...;
其他想法:
答案 2 :(得分:4)
如果您使用的是.NET 3.5(或更高版本),则可以使用LINQ to XML。确保引用了System.Xml.Linq
程序集,并且为其同名命名空间指定了using
指令。
XDocument document = new XDocument(
new XElement("ElementName",
new XAttribute("Type", "FirstAttribute"),
new XAttribute("Name", "SecondAttribute"),
value));
如果您随后想要将XDocument
写入目标,则可以使用其Save
方法。对于调试,调用其ToString
方法很有用,该方法将其XML表示形式返回为string
。
修改:回复评论:
如果您需要将上面创建的XDocument
转换为XmlDocument
实例,您可以使用类似于以下内容的代码:
XmlDocument xmlDocument = new XmlDocument();
using (XmlReader xmlReader = document.CreateReader())
xmlDocument.Load(xmlReader);
答案 3 :(得分:3)
如何使用LINQ to XML,如此article。这可以非常优雅 - 它可以在一条线上完成。
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("element",
new XAttribute("attribute1", "val1"),
new XAttribute("attribute2", "val2"),
)
);