Tag: 解析

如何解析AutoCAD MText实体并将其转换为原始文本?

我想解析AutoCAD的MText实体并提取原始文本。 我看到文本格式化的模式。 如果这已经解决了,那么我就不需要重新发明轮子了。 我在线搜索过,但没有找到足够的信息。 我正在搜索有关此主题的任何链接或参考。 编辑: 为了进一步说明,我们使用ODA(开放式设计联盟)库来访问DWG文件。 我不熟悉这个库。 另一位开发人员正在使用该库并从文件中提取信息,包括MText实体。 然后我提供了一个包含MText文本的文件,这正是我所看到的。 我正在查看MText格式的文本,我可以访问并使用C#。 问题: 我问其他开发人员ODA库是否提供了一种提取未格式化原始文本的方法。 他的回答是,它可能会导致实体被写回DWG文件。 我对原始文本感兴趣而不影响原始DWG文件。 ODA是否提供了一种在不改变文件的情况下提取原始文本的方法? 我对MText的格式化规则的任何文档感兴趣,因此我可以考虑在必要时自己编写解析器。 有没有什么可以将MText转换为RTF? 我意识到RTF不会完全满足所有格式规则,但这可以提供一种在WinForms应用程序中显示格式化文本的令人满意的方法。 鉴于RTF,我也可以获得原始文本。

维护多个设置文件

目前,我有一个具有各种单选按钮,目录浏览器,日期选择器等的表单。应用程序使用设置,并执行文件删除任务。 我想知道将这些设置保存到可以在以后加载的外部文件的最佳策略是什么。 因此,基本上可以加载,执行每个配置,然后加载另一个配置。 此外,配置可以跨安装/用户传递。 我不相信我可以使用内部.settings文件,因为我将有多组可以加载的设置。

c#解析xml with和撇号抛出exception

我正在解析一个xml文件,并在尝试查找其中包含撇号的节点时遇到问题。 当项目名称没有这一切时,一切正常。 我试过用不同的逃避字符替换撇号但是没有太多运气 string s = “/itemDB/item[@name='” + itemName + “‘]”; // Things i have tried that did not work // s.Replace(“‘”, “””); // .Replace(“‘”, “\'”); XmlNode parent = root.SelectSingleNode(s); 我总是收到XPathException。 这样做的正确方法是什么。 谢谢

如何解析节点名称中无效字符的XML?

所以我试图解析一些XML,其创建不受我的控制。 问题是,他们以某种方式获得了如下所示的节点: Visual Studio和.NET都认为上面使用的’(’和’)’字符完全无效。 不幸的是,我需要处理这些文件! 有没有办法让Xml Reader类看到这些字符,或动态地逃避它们或其他东西? 我可以对整个文件进行某种预处理,但如果它们以某种有效的方式出现在节点内,我想要’(’和’)’字符,所以我不想只删除它们。 ..

使用Enum.Parse()时出现意外结果

class Program { static void Main(string[] args) { String value = “Two”; Type enumType = typeof(Numbers); Numbers number = (Numbers)Enum.Parse(enumType, value); Console.WriteLine(Enum.Parse(enumType, value)); } public enum Numbers : int { One, Two, Three, Four, FirstValue = 1 } } 这是我在应用程序中使用的枚举的简化版本。 为什么某些枚举名称没有值的原因是因为我使用其名称作为参数执行Enum.Parse,而具有值的那些名称则从int解析。 如果您单步执行上面的代码并调查’number’变量,您会看到它实际上是’Two’,但控制台中的输出是’FirstValue’。 此时我看不清楚为什么,是吗? 好的,解决方案很简单 – 只需给无价值的枚举值。 但我仍然很好奇。

如何解析c#中的html文本

我有一个像这样的html表达式: “This is Some Text” + Environment.NewLine + “This is some more text 我只想提取文本。 所以结果应该是 “This is Some Text” + Environment.NewLine + “This is some more text” 我该怎么做呢?

解析带有通配符的规范路径

我正在编写C#函数,它检索一些匹配模式的文件。 输入:C:\ abc * \ abc?\ testfile。* 输出:匹配所有文件。 我以为我可以通过递归来实现。 但这并不容易:( 你有一个很好的算法吗? 更新 : 我做到了。 谢谢Kieren 🙂 void PrintAllFiles(DirectoryInfo currentDir, string currentPattern, string nextPatten) { DirectoryInfo[] dis = currentDir.GetDirectories(currentPattern); if (dis.Length > 0) { string[] remainPattern = nextPatten.Split(“\\”.ToCharArray()); if (remainPattern.Length > 0) { foreach (DirectoryInfo di in dis) { PrintAllFiles(di, remainPattern.First(), string.Join(“\\”, remainPattern.Skip(1).ToArray())); } } } […]

如何处理Json.Net解析中的错误

我正在使用Json.Net进行Json反序列化。 有时我读的Json字符串不正确(我无法修复,因为我不生成它)。 特别是,在一个特定的地方,应该有一个字符串,有时会有一个序列化的对象。 Json.Net然后抱怨,并不奇怪,找到一个预期字符串的对象。 我发现我可以通过在JsonSerializerSettings使用Error来拦截它,并通过设置ErrorContext.Handled使Json.Net忽略该问题。 但我想做更多。 如果我可以查看序列化对象,我可以弄清楚字符串应该是什么,并在理论上提供正确的答案。 在实践中,我无法想象我们如何做到这一点。 特别是在error handling程序中: 如何访问解析器绊倒的字符串(注意,如果设置了ErrorContext.Handled ,解析器可以成功继续,因此它可以正确地确定问题字符串的开始和结束)? 如何将正确的字符串提供给解析器,或者可以访问当前解析的对象,以便我可以手动设置该值? [编辑]根据要求提供简化示例: 我要解析的错误的Json字符串: { “id”: 2623, “name”: { “a”: 39, “b”: 0.49053320637463277, “c”: “cai5z+A=”, “name”: “22” }, “children”: [ { “id”: 3742, “name”: { “a”: 37, “b”: 0.19319664789046936, “c”: “Me/KKPY=”, “name”: “50” }, “children”: [ { “id”: 1551, “name”: { “a”: 47, “b”: […]

使用敏捷包解析html

我有一个要解析的HTML(见下文) InBox From Subject Date no-reply@somemail.net Hi, Welcome just now someone@outlook.com sa just now 我需要解析<tr onclick=标签中的链接和 标签中的电子邮件地址。 到目前为止,我想从我的html首次出现电子邮件/链接。 HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(responseFromServer); 有人能告诉我它是如何做得好的? 基本上我想要做的是从所述标签中的html获取所有电子邮件地址和链接。 foreach (HtmlNode link in doc.DocumentNode.SelectNodes(“//tr[@onclick]”)) { HtmlAttribute att = link.Attributes[“onclick”]; Console.WriteLine(att.Value); } 编辑:我需要将解析后的值成对存储在类(列表)中。 电子邮件(链接)和发件人电子邮件。 public class ClassMailBox { public string From { get; set; } public string LinkToMail { […]

如何使InvariantCulture将逗号识别为小数分隔符?

如何使用Single.Parse解析1,2 ? 问的原因是因为,当我使用CultureInfo.InvariantCulture我没有按照我的CultureInfo.InvariantCulture得到1.2,而是12。 不应该“不变文化”忽视文化吗? 请考虑以下示例 : using System; using System.Globalization; public class Program { public static void Main() { Console.WriteLine(Single.Parse(“1,2”, CultureInfo.InvariantCulture)); Console.WriteLine(Single.Parse(“1.2”, CultureInfo.InvariantCulture)); float value; Console.WriteLine(Single.TryParse(“1,2”, NumberStyles.Float, CultureInfo.InvariantCulture, out value)); Console.WriteLine(Single.TryParse(“1,2”, out value)); Console.WriteLine(value); } } 这个的输出将是 12 1.2 假 真正 12 但我期待: 1.2 1.2 真正 真正 1.2 基于 我对InvariantCulture 阅读 ,我应该得到那个结果,但我不是。