我想在运行时创建这样的东西:
<CWS>
<Case name="10-040-00022">
<CaseDetailsSet>
<CaseDetail title="Patient name" />
<CaseDetail title="Date of birth" />
</CaseDetailsSet>
</Case>
</CWS>
所以我写了这样的东西(我希望在.NET中使用DOM ..而不是XMLWriter等)
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("CWS");
XmlElement singleCase = doc.CreateElement("Case");
root.AppendChild(singleCase);
singleCase.SetAttribute("name", "10-040-00022");
XmlElement CaseDetailsSet = doc.CreateElement("CaseDetailsSet");
singleCase.AppendChild(CaseDetailsSet);
XmlElement CaseDetail = doc.CreateElement("CaseDetail");
CaseDetailsSet.AppendChild(CaseDetail);
CaseDetail.SetAttribute("title", "Patient Name");
请看看它并告诉我,如果我出错了,请考虑我编写的代码以创建上述结构。
非常感谢。答案 0 :(得分:2)
两件事:
您需要添加第二个CaseDetail。
XmlDocument doc = new XmlDocument();
XmlElement root = doc.CreateElement("CWS");
doc.AppendChild(root); // Append the root element to the XmlDocument
XmlElement singleCase = doc.CreateElement("Case");
root.AppendChild(singleCase);
singleCase.SetAttribute("name", "10-040-00022");
XmlElement CaseDetailsSet = doc.CreateElement("CaseDetailsSet");
singleCase.AppendChild(CaseDetailsSet);
XmlElement CaseDetail = doc.CreateElement("CaseDetail");
CaseDetailsSet.AppendChild(CaseDetail);
CaseDetail.SetAttribute("title", "Patient Name");
// add the second case detail
XmlElement CaseDetailDateOfBirth = doc.CreateElement("CaseDetail");
CaseDetailsSet.AppendChild(CaseDetailDateOfBirth);
CaseDetailDateOfBirth.SetAttribute("title", "Date of birth");
答案 1 :(得分:2)
我想我会用Linq-to-XML
来演示如何做到这一点XElement doc = new XElement("CWS",
new XElement("Case",
new XAttribute("name", "10-040-00022"),
new XElement("CaseDetailSet",
new XElement("CaseDetail",
new XAttribute("title", "Patient name")),
new XElement("CaseDetail",
new XAttribute("title", "Date of birth")))));
答案 2 :(得分:1)
我发现您的代码没有问题。如果它创建了你想要的xml,它应该没问题。有许多不同的创建xml文档的方法,你的似乎没问题。