C# 这样创建XML是否正确:

C# 这样创建XML是否正确:,c#,dom,xmldocument,C#,Dom,Xmldocument,我想在运行时创建如下内容: <CWS> <Case name="10-040-00022"> <CaseDetailsSet> <CaseDetail title="Patient name" /> <CaseDetail title="Date of birth" /> </CaseDetailsSet> </Case> <

我想在运行时创建如下内容:

  <CWS>
    <Case name="10-040-00022">
      <CaseDetailsSet>
        <CaseDetail title="Patient name" /> 
        <CaseDetail title="Date of birth" /> 
      </CaseDetailsSet>
    </Case>
  </CWS>
请看一看,告诉我,如果我做错了什么,请根据我编写的代码创建上面的结构


非常感谢。

我认为您的代码没有问题。如果它创建了您想要的xml,那么应该可以。创建xml文档有许多不同的方法,您的方法似乎还可以。

我认为您的代码没有问题。如果它创建了您想要的xml,那么应该可以。创建xml文档有很多不同的方法,您的方法似乎还可以。

两件事:

  • 您需要将根目录附加到XmlDocument
  • 您需要添加第二个案例详细信息

    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");
    
  • 两件事:

  • 您需要将根目录附加到XmlDocument
  • 您需要添加第二个案例详细信息

    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");
    

  • 我只是想展示一下如何使用LINQtoXML实现这一点

    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")))));
    

    我只是想展示一下如何使用LINQtoXML实现这一点

    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")))));
    


    代码是否没有编写您期望的文档?或者您正在寻找最佳实践建议?您可能想查看Linq to XML。创建XML要容易得多,如果需要的话,还可以获得Linq的好处。@juharr-我能忍受这些DOM类这么长时间真是个奇迹。@Brabster:我希望它能工作,但我还没有做足够的研究来了解如何将它写入磁盘,看看它是否符合我的要求。是的,我正在寻找这方面的最佳实践建议well@juharr:你的建议的学习曲线如何才能达到我的目标?这是一个截止日期为今天结束的项目:D。。你知道:代码不是在写你期望的文档吗?或者您正在寻找最佳实践建议?您可能想查看Linq to XML。创建XML要容易得多,如果需要的话,还可以获得Linq的好处。@juharr-我能忍受这些DOM类这么长时间真是个奇迹。@Brabster:我希望它能工作,但我还没有做足够的研究来了解如何将它写入磁盘,看看它是否符合我的要求。是的,我正在寻找这方面的最佳实践建议well@juharr:你的建议的学习曲线如何才能达到我的目标?这是一个截止日期为今天结束的项目:D。。您知道:要将其保存到磁盘,请使用doc.save(@“c:\case.xml”);谢谢,先生,我太担心根了,如果我做错了,我会觉得有点不舒服。谢谢,所以我们不需要在代码中的任何地方使用XMLNode?这就是Intrest,使用XMLElement创建所有内容并为其设置正确的父级正在执行此任务。。。很好……@ChaosPandion:同意。我所做的只是指出代码的问题;谢谢,先生,我太担心根了,如果我做错了,我会觉得有点不舒服。谢谢,所以我们不需要在代码中的任何地方使用XMLNode?这就是Intrest,使用XMLElement创建所有内容并为其设置正确的父级正在执行此任务。。。很好……@ChaosPandion:同意。我只想指出代码的问题。非常感谢。这有助于了解我需要了解的信息。再次感谢,哇。。。这个LINQ真是太酷了。非常感谢你。这有助于了解我需要了解的信息。再次感谢,哇。。。这个LINQ很酷。