首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择子XML作为字符串

选择子XML作为字符串
EN

Stack Overflow用户
提问于 2014-07-09 15:53:30
回答 1查看 105关注 0票数 0

我有以下XML:

代码语言:javascript
复制
<Run id="1">
  <Servers>
    <Server id="1" fqdn="ENG-HSINGH">
      <Roles>
        <Role id="1" rootFolder="C:\DeleteMe"/>
      </Roles>
    </Server>
  </Servers>
  <Roles>
    <Role id="1">
      <ValidationInformation>
        <ValidationObject>
          <FileSystem>
            <Directory path="\A\HTML">
              <File id="1" path="\A\HTML\1.HTM"/>
              <File id="2" path="\A\HTML\2.ASP" />
            </Directory>
            <Directory path="\B\EntireFolder">
              <File id="8" path="\B\EntireFolder\1.txt"/>
              <File id="9" path="\B\EntireFolder\2.txt"/>
              <File id="10" path="\B\EntireFolder\3.txt"/>
              <File id="11" path="\B\EntireFolder\4.txt"/>
              <File id="12" path="\EHR\EntireFolder\5.txt"/>
            </Directory>
            <Files>
              <File id="4" path="\C\6.txt"/>
            </Files>
          </FileSystem>
        </ValidationObject>
      </ValidationInformation>
    </Role>
    <Role id="2">
      <ValidationInformation>
        <ValidationObject>
          <FileSystem>
            <Directory path="\D\HTML">
              <File id="13" path="\D\HTML\1.HTM"/>
            </Directory>
            <Directory path="\E">
              <File id="14" path="\E\1.txt"/>
            </Directory>
            <Files>
              <File id="15" path="\F\1.txt"/>
            </Files>
          </FileSystem>
        </ValidationObject>
      </ValidationInformation>
    </Role>
  </Roles>
</Run>

我想把这个XML读入一个表示角色的字典中,它是对应的ValidationInformation子XML,如string.e.g.

代码语言:javascript
复制
1, "&lt;ValidationObject&gt;&lt;FileSystem&gt;&lt;Directory path='\A\HTML'&gt;&lt;File id='1' path='\A\HTML\1.HTM'/&gt;&lt;File id='2' path='\A\HTML\2.ASP' /&gt;&lt;/Directory&gt;&lt;Directory path='\B\EntireFolder'&gt;&lt;File id='8' path='\B\EntireFolder\1.txt'/&gt;&lt;File id='9' path='\B\EntireFolder\2.txt'/&gt;&lt;File id='10' path='\B\EntireFolder\3.txt'/&gt;&lt;File id='11' path='\B\EntireFolder\4.txt'/&gt;&lt;File id='12' path='\EHR\EntireFolder\5.txt'/&gt;&lt;/Directory&gt;&lt;Files&gt;&lt;File id='4' path='\C\6.txt'/&gt;&lt;/Files&gt;&lt;/FileSystem&gt;&lt;/ValidationObject&gt;"

2, "&lt;ValidationObject&gt;&lt;FileSystem&gt;&lt;Directory path='\D\HTML'&gt;&lt;File id='13' path='\D\HTML\1.HTM'/&gt;&lt;/Directory&gt;&lt;Directory path='\E'&gt;&lt;File id='14' path='\E\1.txt'/&gt;&lt;/Directory&gt;&lt;Files&gt;&lt;File id='15' path='\F\1.txt'/&gt;&lt;/Files&gt;&lt;/FileSystem&gt;&lt;/ValidationObject&gt;"

我知道我可以为每个角色读取ValidationInformation节点下的XML节点,并将其粘贴到相应的XML中,但这似乎不是一个好方法。

有更干净的方法吗?

谢谢,H

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-09 17:36:40

这是为我工作的:

代码语言:javascript
复制
Dictionary<int, string> myDictionary = new Dictionary<int, string>();
            XmlDocument xml = new XmlDocument();
            xml.LoadXml(<myInputXMLAsString>);
            XmlNodeList xnList = xml.SelectNodes("/Run/Roles");

            foreach (XmlNode xn in xnList)
            {
                int roleId = int.Parse(xn["Role"].Attributes["id"].Value);
                XmlDocument subXmlDocument = new XmlDocument();
                subXmlDocument.LoadXml(xn.InnerXml);
                XmlNodeList subXn = subXmlDocument.SelectNodes("/Role/ValidationInformation");
                string validationInfo = subXn[0].InnerXml;
                roleIdToValidationInformationDictionary.Add(roleId, validationInfo);
            }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24658359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档