【问题标题】:Parse XML String with Regex.Matches in C#在 C# 中使用 Regex.Matches 解析 XML 字符串
【发布时间】:2011-11-29 02:26:18
【问题描述】:

我有一个非常奇怪的问题,我目前无法解决。

我尝试使用 Regex.Matches 解析 xml 字符串以获取具有特定名称的所有 xml 节点。

它一直工作到现在。

我有一个 xml 输入字符串,其中正好有 30 个名为“row”的 xml 节点

出于某种奇怪的原因,我的代码返回了 26 个节点。 我实际上不知道为什么缺少 4 个。

这是我解析数据的代码:

public static List<String> getXMLNodeContentFromSQLQueryString(String queryString, String rowName)
    {
        List<String> returnVal = new List<string>();
        MatchCollection matchCollection = Regex.Matches(queryString, "<" + rowName + ">.*?</" + rowName + ">");
        foreach (Match match in matchCollection)
        {
            String splitted = match.ToString();
            splitted = splitted.Replace("<" + rowName + ">", "").Replace("</" + rowName + ">", "");
            returnVal.Add(splitted);
        }
        if (returnVal.Count == 0)
            returnVal.Add("");
        return returnVal;
    }

这是 xml 字符串

"<?xml version=\"1.0\"?>\r\n<EADATA version=\"1.0\" exporter=\"Enterprise Architect\">\r\n\t<Dataset_0><Data><Row><OperationID>5</OperationID><Object_ID>135</Object_ID><Name>applyForward</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>1</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{84137450-8053-46eb-ACD5-574741233ABC}</ea_guid></Row><Row><OperationID>6</OperationID><Object_ID>135</Object_ID><Name>applyBackward</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{416E8BF3-9D6D-4fb3-8C32-05E4E6B8EDDD}</ea_guid></Row><Row><OperationID>12</OperationID><Object_ID>240</Object_ID><Name>copy</Name><Scope>Public</Scope><Type>EObject</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{E57518A9-9A91-4b0f-9311-F7AF3177F809}</ea_guid></Row><Row><OperationID>13</OperationID><Object_ID>240</Object_ID><Name>embedSDMInEAnnotation</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>1</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{44F4A863-86CB-4889-B179-3F4BA1F68D8D}</ea_guid></Row><Row><OperationID>18</OperationID><Object_ID>273</Object_ID><Name>configure</Name><Scope>Public</Scope><Type>EBoolean</Type><ReturnArray>0</ReturnArray><Concurrency>Sequential</Concurrency><Notes>0. Integrator creates GraphTriple and sets roots\r\n1. Adds the given graph triple to the translator\r\n2. Iterates over composite structure of input model and fills unprocessedNodes and unprocessedEdges (other collections are initially empty although this could be different in incremental mode)</Notes><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{B22FDBFE-C033-4ff5-81FB-2ED133A55F62}</ea_guid></Row><Row><OperationID>19</OperationID><Object_ID>273</Object_ID><Name>translate</Name><Scope>Public</Scope><Type>TranslationResult</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>1</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>136</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{2DFA0837-F09F-40f5-A4BD-CD3857D2D712}</ea_guid></Row><Row><OperationID>21</OperationID><Object_ID>165</Object_ID><Name>determineLNCC</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><Concurrency>Sequential</Concurrency><Notes>Iterate through all rules of the given TGG and consider edges in the following way:\r\nforall edges e in rule r\r\n-&amp;gt; s(e) or t(e) are context elements\r\n-&amp;gt; e is set to create\r\n=&amp;gt; add quadruple containing the types of s(e), t(e), the name of e and the encoded equivalent if s, t or both are context elements.</Notes><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{0E021F1A-5CE7-4f68-B737-D2C11AA200ED}</ea_guid></Row><Row><OperationID>22</OperationID><Object_ID>273</Object_ID><Name>determineCandidateRulesForNode</Name><Scope>Public</Scope><Type>CandidateRules</Type><ReturnArray>0</ReturnArray><Concurrency>Sequential</Concurrency><Notes>1. Look up in table for operational rules that translate type(node).</Notes><Synchronized>0</Synchronized><Pos>2</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>352</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{7BE07512-219E-40f3-BB81-B1C5B5B15211}</ea_guid></Row><Row><OperationID>24</OperationID><Object_ID>135</Object_ID><Name>isAppropriate</Name><Scope>Public</Scope><Type>EOperation</Type><ReturnArray>0</ReturnArray><Concurrency>Sequential</Concurrency><Notes>1. check if core match exists in input graph starting from given entry node\r\n2. check if DEC is satisfied (call external method)\r\n3. process context on demand\r\n4. return the corresponding perform* EOperation or null if check failed.</Notes><Synchronized>0</Synchronized><Pos>2</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>183</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{EC74C95A-0D42-4b5d-98C6-0E3273664A8D}</ea_guid></Row><Row><OperationID>25</OperationID><Object_ID>273</Object_ID><Name>updateProcessedSets</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Notes>1. Determines the corresponding graph elements to the translated objects in the given ruleResult (also edges for translated references!!!)\r\n2. Adds these graph elements to the set of processed elements\r\n3. Be careful not to manipulate the set of unprocessed elements!</Notes><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>3</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{CE58DEC9-E683-4d49-8A92-986698AD7ABD}</ea_guid></Row><Row><OperationID>26</OperationID><Object_ID>165</Object_ID><Name>buildCandidateRulesLookupTable</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>1</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{BC2520AA-DB89-4280-ACE6-F6A8711EDC61}</ea_guid></Row><Row><OperationID>28</OperationID><Object_ID>273</Object_ID><Name>determineCandidateRulesForEdge</Name><Scope>Public</Scope><Type>CandidateRules</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>4</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>352</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{1070078F-FF2E-49ca-9432-2D50C026A0D6}</ea_guid></Row><Row><OperationID>29</OperationID><Object_ID>288</Object_ID><Name>eInvoke</Name><Scope>Public</Scope><Type>java.lang.Object</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{A1D00185-AE82-493e-AAAC-E916D2DD98D3}</ea_guid></Row><Row><OperationID>38</OperationID><Object_ID>240</Object_ID><Name>CREATE</Name><Scope>Public</Scope><Type>BindingOperator</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>4</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>115</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{42E99307-46D4-444b-886B-FBA399DF29F6}</ea_guid></Row><Row><OperationID>39</OperationID><Object_ID>240</Object_ID><Name>BACKWARD</Name><Scope>Public</Scope><Type>ApplicationTypes</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>5</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>272</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{D0F76449-7205-4f9c-A03D-C68F72A669C4}</ea_guid></Row><Row><OperationID>27</OperationID><Object_ID>165</Object_ID><Name>determineEntryNode</Name><Scope>Private</Scope><Type>TGGObjectVariable</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>2</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>128</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{12E442A3-491E-4dc2-9171-728084C3746F}</ea_guid></Row><Row><OperationID>30</OperationID><Object_ID>434</Object_ID><Name>invokeOperationWithSingleArg</Name><Scope>Public</Scope><Type>EObject</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>288</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{DDE51358-F82B-4100-A5D1-12154D533B41}</ea_guid></Row><Row><OperationID>31</OperationID><Object_ID>165</Object_ID><Name>deriveOperationalRules</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>3</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{30584C3D-773E-4256-BBE9-4FD226E45814}</ea_guid></Row><Row><OperationID>32</OperationID><Object_ID>165</Object_ID><Name>createOperationalRules</Name><Scope>Private</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>4</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{ED7EF05C-D74B-4a0f-897D-DB7612AC5AEB}</ea_guid></Row><Row><OperationID>35</OperationID><Object_ID>240</Object_ID><Name>determineOperationSignature</Name><Scope>Public</Scope><Type>EString</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>2</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{999096A0-B224-4446-A8D5-CB581BA2DD20}</ea_guid></Row><Row><OperationID>36</OperationID><Object_ID>165</Object_ID><Name>createPerformOperation</Name><Scope>Private</Scope><Type>Activity</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>5</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>95</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{3414F021-9221-4be2-A133-28E6DAA25ADD}</ea_guid></Row><Row><OperationID>37</OperationID><Object_ID>240</Object_ID><Name>convertDirectionToAppropriateDomain</Name><Scope>Public</Scope><Type>DomainType</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>3</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>198</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{E83E8FA4-1802-4a2a-AF6B-81D5E4BAB83A}</ea_guid></Row><Row><OperationID>40</OperationID><Object_ID>240</Object_ID><Name>FORWARD</Name><Scope>Public</Scope><Type>ApplicationTypes</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>6</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>272</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{403AA3D8-A275-4763-BB64-8BDF6425EA18}</ea_guid></Row><Row><OperationID>42</OperationID><Object_ID>165</Object_ID><Name>createIsAppropriateOperation</Name><Scope>Public</Scope><Type>Activity</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>6</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>95</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{15A6B03B-DDE5-479d-A3DE-FA2A05970DE1}</ea_guid></Row><Row><OperationID>43</OperationID><Object_ID>240</Object_ID><Name>CHECK_ONLY</Name><Scope>Public</Scope><Type>BindingOperator</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>7</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>115</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{16268928-5197-4269-8A3D-5251DD8AA7A6}</ea_guid></Row><Row><OperationID>44</OperationID><Object_ID>240</Object_ID><Name>BOUND</Name><Scope>Public</Scope><Type>BindingState</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>8</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>113</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{5529869A-FE95-489e-BB61-BB1F46EBAB87}</ea_guid></Row><Row><OperationID>45</OperationID><Object_ID>240</Object_ID><Name>UNBOUND</Name><Scope>Public</Scope><Type>BindingState</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>9</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>113</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{A3CFAA93-BE84-4602-BAC7-AF42DE44F4AE}</ea_guid></Row><Row><OperationID>46</OperationID><Object_ID>240</Object_ID><Name>SUCCESS</Name><Scope>Public</Scope><Type>EdgeGuard</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>10</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>104</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{41D81F5E-E224-4171-A7B5-08BAD5D650E3}</ea_guid></Row><Row><OperationID>47</OperationID><Object_ID>240</Object_ID><Name>FAILURE</Name><Scope>Public</Scope><Type>EdgeGuard</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>11</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>104</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{8D2A6AF2-70C9-4d51-ADF2-CBD72BE0D8C1}</ea_guid></Row><Row><OperationID>48</OperationID><Object_ID>240</Object_ID><Name>MANDATORY</Name><Scope>Public</Scope><Type>BindingSemantics</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>12</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>114</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{ADB4946B-AAA6-4ead-97DE-476DE4406DC1}</ea_guid></Row></Data></Dataset_0></EADATA>\r\n"

还有什么想法?

谢谢


解决了!!!!!!!!!!!!!!!

仍然不知道问题出在哪里,但使用 XMLReader 解决了问题,感谢您的建议,这里有感兴趣的人的代码。

公共静态列表 getXMLNodeContentFromSQLQueryString(String queryString, String rowName) { 列表 returnVal = new List();

    // load contents of file
    TextReader textReader = new StringReader(queryString);

    // process file contents
    XmlDocument domDoc = new XmlDocument();
    domDoc.Load(textReader);

    XmlNodeList nodeList = domDoc.GetElementsByTagName(rowName);
    foreach (XmlNode node in nodeList)
    {
        returnVal.Add(node.InnerXml);    
    }
    return returnVal;
}

【问题讨论】:

  • 不要使用正则表达式解析 XML。 使用 XML API。
  • 用实际的 XML 解析器解析 XML 会返回什么?另外,您是否尝试查找 /which/ 缺少行?和/或在调试器中单步执行代码以查看代码以了解为什么可以跳过它们?
  • 无法进行调试,因为 Regex.Matches 立即返回包含 26 个条目的 MatchCollection。不知道为什么。发现丢失的行非常烦人。我现在将尝试使用 LINQ 解析字符串。
  • 更改您的代码,以便创建一个Regex 对象实例。然后您可以使用Match m = re.Match()m.NextMatch() 直到m.Success != true。这样您就可以单独查看每个匹配项并确定缺少的位置。

标签: c# xml parsing


【解决方案1】:

在每个未返回的行(OperationID 分别为 18、21、24 和 25 的 Rows)中,文本中存在一个或多个“\r\n”,导致 Regex 不匹配。删除它们或暂时替换它们将返回所有 30 行。

但是,像现在这样使用 XML 解析器绝对是正确的方法。

【讨论】:

    【解决方案2】:

    添加这个命名空间,而不是使用正则表达式

    using System.Xml.Linq;
    using System.Xml.XPath;
    

    然后:

     var x1 = XDocument.Parse(str);
     var rows = x1.XPathSelectElements("//Row");
    

    【讨论】:

      【解决方案3】:

      这可能对某人有所帮助。使用 Linq to XML

      string xmlString = "<?xml version=\"1.0\"?>\r\n<EADATA version=\"1.0\" exporter=\"Enterprise Architect\">\r\n\t<Dataset_0><Data><Row><OperationID>5</OperationID><Object_ID>135</Object_ID><Name>applyForward</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>1</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{84137450-8053-46eb-ACD5-574741233ABC}</ea_guid></Row><Row><OperationID>6</OperationID><Object_ID>135</Object_ID><Name>applyBackward</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{416E8BF3-9D6D-4fb3-8C32-05E4E6B8EDDD}</ea_guid></Row><Row><OperationID>12</OperationID><Object_ID>240</Object_ID><Name>copy</Name><Scope>Public</Scope><Type>EObject</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{E57518A9-9A91-4b0f-9311-F7AF3177F809}</ea_guid></Row><Row><OperationID>13</OperationID><Object_ID>240</Object_ID><Name>embedSDMInEAnnotation</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>1</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{44F4A863-86CB-4889-B179-3F4BA1F68D8D}</ea_guid></Row><Row><OperationID>18</OperationID><Object_ID>273</Object_ID><Name>configure</Name><Scope>Public</Scope><Type>EBoolean</Type><ReturnArray>0</ReturnArray><Concurrency>Sequential</Concurrency><Notes>0. Integrator creates GraphTriple and sets roots\r\n1. Adds the given graph triple to the translator\r\n2. Iterates over composite structure of input model and fills unprocessedNodes and unprocessedEdges (other collections are initially empty although this could be different in incremental mode)</Notes><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{B22FDBFE-C033-4ff5-81FB-2ED133A55F62}</ea_guid></Row><Row><OperationID>19</OperationID><Object_ID>273</Object_ID><Name>translate</Name><Scope>Public</Scope><Type>TranslationResult</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>1</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>136</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{2DFA0837-F09F-40f5-A4BD-CD3857D2D712}</ea_guid></Row><Row><OperationID>21</OperationID><Object_ID>165</Object_ID><Name>determineLNCC</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><Concurrency>Sequential</Concurrency><Notes>Iterate through all rules of the given TGG and consider edges in the following way:\r\nforall edges e in rule r\r\n-&amp;gt; s(e) or t(e) are context elements\r\n-&amp;gt; e is set to create\r\n=&amp;gt; add quadruple containing the types of s(e), t(e), the name of e and the encoded equivalent if s, t or both are context elements.</Notes><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{0E021F1A-5CE7-4f68-B737-D2C11AA200ED}</ea_guid></Row><Row><OperationID>22</OperationID><Object_ID>273</Object_ID><Name>determineCandidateRulesForNode</Name><Scope>Public</Scope><Type>CandidateRules</Type><ReturnArray>0</ReturnArray><Concurrency>Sequential</Concurrency><Notes>1. Look up in table for operational rules that translate type(node).</Notes><Synchronized>0</Synchronized><Pos>2</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>352</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{7BE07512-219E-40f3-BB81-B1C5B5B15211}</ea_guid></Row><Row><OperationID>24</OperationID><Object_ID>135</Object_ID><Name>isAppropriate</Name><Scope>Public</Scope><Type>EOperation</Type><ReturnArray>0</ReturnArray><Concurrency>Sequential</Concurrency><Notes>1. check if core match exists in input graph starting from given entry node\r\n2. check if DEC is satisfied (call external method)\r\n3. process context on demand\r\n4. return the corresponding perform* EOperation or null if check failed.</Notes><Synchronized>0</Synchronized><Pos>2</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>183</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{EC74C95A-0D42-4b5d-98C6-0E3273664A8D}</ea_guid></Row><Row><OperationID>25</OperationID><Object_ID>273</Object_ID><Name>updateProcessedSets</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Notes>1. Determines the corresponding graph elements to the translated objects in the given ruleResult (also edges for translated references!!!)\r\n2. Adds these graph elements to the set of processed elements\r\n3. Be careful not to manipulate the set of unprocessed elements!</Notes><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>3</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{CE58DEC9-E683-4d49-8A92-986698AD7ABD}</ea_guid></Row><Row><OperationID>26</OperationID><Object_ID>165</Object_ID><Name>buildCandidateRulesLookupTable</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>1</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{BC2520AA-DB89-4280-ACE6-F6A8711EDC61}</ea_guid></Row><Row><OperationID>28</OperationID><Object_ID>273</Object_ID><Name>determineCandidateRulesForEdge</Name><Scope>Public</Scope><Type>CandidateRules</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>4</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>352</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{1070078F-FF2E-49ca-9432-2D50C026A0D6}</ea_guid></Row><Row><OperationID>29</OperationID><Object_ID>288</Object_ID><Name>eInvoke</Name><Scope>Public</Scope><Type>java.lang.Object</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{A1D00185-AE82-493e-AAAC-E916D2DD98D3}</ea_guid></Row><Row><OperationID>38</OperationID><Object_ID>240</Object_ID><Name>CREATE</Name><Scope>Public</Scope><Type>BindingOperator</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>4</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>115</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{42E99307-46D4-444b-886B-FBA399DF29F6}</ea_guid></Row><Row><OperationID>39</OperationID><Object_ID>240</Object_ID><Name>BACKWARD</Name><Scope>Public</Scope><Type>ApplicationTypes</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>5</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>272</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{D0F76449-7205-4f9c-A03D-C68F72A669C4}</ea_guid></Row><Row><OperationID>27</OperationID><Object_ID>165</Object_ID><Name>determineEntryNode</Name><Scope>Private</Scope><Type>TGGObjectVariable</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>2</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>128</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{12E442A3-491E-4dc2-9171-728084C3746F}</ea_guid></Row><Row><OperationID>30</OperationID><Object_ID>434</Object_ID><Name>invokeOperationWithSingleArg</Name><Scope>Public</Scope><Type>EObject</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>0</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>288</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{DDE51358-F82B-4100-A5D1-12154D533B41}</ea_guid></Row><Row><OperationID>31</OperationID><Object_ID>165</Object_ID><Name>deriveOperationalRules</Name><Scope>Public</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>3</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{30584C3D-773E-4256-BBE9-4FD226E45814}</ea_guid></Row><Row><OperationID>32</OperationID><Object_ID>165</Object_ID><Name>createOperationalRules</Name><Scope>Private</Scope><Type>void</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>4</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{ED7EF05C-D74B-4a0f-897D-DB7612AC5AEB}</ea_guid></Row><Row><OperationID>35</OperationID><Object_ID>240</Object_ID><Name>determineOperationSignature</Name><Scope>Public</Scope><Type>EString</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>2</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>0</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{999096A0-B224-4446-A8D5-CB581BA2DD20}</ea_guid></Row><Row><OperationID>36</OperationID><Object_ID>165</Object_ID><Name>createPerformOperation</Name><Scope>Private</Scope><Type>Activity</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>5</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>95</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{3414F021-9221-4be2-A133-28E6DAA25ADD}</ea_guid></Row><Row><OperationID>37</OperationID><Object_ID>240</Object_ID><Name>convertDirectionToAppropriateDomain</Name><Scope>Public</Scope><Type>DomainType</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>3</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>198</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{E83E8FA4-1802-4a2a-AF6B-81D5E4BAB83A}</ea_guid></Row><Row><OperationID>40</OperationID><Object_ID>240</Object_ID><Name>FORWARD</Name><Scope>Public</Scope><Type>ApplicationTypes</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>6</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>272</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{403AA3D8-A275-4763-BB64-8BDF6425EA18}</ea_guid></Row><Row><OperationID>42</OperationID><Object_ID>165</Object_ID><Name>createIsAppropriateOperation</Name><Scope>Public</Scope><Type>Activity</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>6</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>95</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{15A6B03B-DDE5-479d-A3DE-FA2A05970DE1}</ea_guid></Row><Row><OperationID>43</OperationID><Object_ID>240</Object_ID><Name>CHECK_ONLY</Name><Scope>Public</Scope><Type>BindingOperator</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>7</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>115</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{16268928-5197-4269-8A3D-5251DD8AA7A6}</ea_guid></Row><Row><OperationID>44</OperationID><Object_ID>240</Object_ID><Name>BOUND</Name><Scope>Public</Scope><Type>BindingState</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>8</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>113</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{5529869A-FE95-489e-BB61-BB1F46EBAB87}</ea_guid></Row><Row><OperationID>45</OperationID><Object_ID>240</Object_ID><Name>UNBOUND</Name><Scope>Public</Scope><Type>BindingState</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>9</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>113</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{A3CFAA93-BE84-4602-BAC7-AF42DE44F4AE}</ea_guid></Row><Row><OperationID>46</OperationID><Object_ID>240</Object_ID><Name>SUCCESS</Name><Scope>Public</Scope><Type>EdgeGuard</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>10</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>104</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{41D81F5E-E224-4171-A7B5-08BAD5D650E3}</ea_guid></Row><Row><OperationID>47</OperationID><Object_ID>240</Object_ID><Name>FAILURE</Name><Scope>Public</Scope><Type>EdgeGuard</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>11</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>104</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{8D2A6AF2-70C9-4d51-ADF2-CBD72BE0D8C1}</ea_guid></Row><Row><OperationID>48</OperationID><Object_ID>240</Object_ID><Name>MANDATORY</Name><Scope>Public</Scope><Type>BindingSemantics</Type><ReturnArray>0</ReturnArray><IsStatic>0</IsStatic><Concurrency>Sequential</Concurrency><Abstract>0</Abstract><Synchronized>0</Synchronized><Pos>12</Pos><Const>0</Const><Pure>FALSE</Pure><Classifier>114</Classifier><IsRoot>FALSE</IsRoot><IsLeaf>FALSE</IsLeaf><IsQuery>FALSE</IsQuery><ea_guid>{ADB4946B-AAA6-4ead-97DE-476DE4406DC1}</ea_guid></Row></Data></Dataset_0></EADATA>\r\n";
              //s = File.ReadAllText("d:\\test.txt");
              //s = "<string>" + s + "</string>";
              List<String> returnVal = new List<string>();
              string rowName="Row";
              try
              {
                  XElement x = XElement.Parse(xmlString);
                  var rows=x.Descendants(rowName);
                  foreach (var row in rows)
                  {
                      returnVal.Add(row.ToString().Replace("<" + rowName + ">", string.Empty).Replace("</" + rowName + ">", string.Empty).Replace("\r", string.Empty).Replace("\n", string.Empty).Replace(">  <", string.Empty));
                  }
              }
              catch
              {
              }
      

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多