c# - 将 XML XElement 的本地名称传输到字符串
问题描述
嘿,我是 C# 编程的新手,所以也许这是一个简单的问题。我尝试使用 XDocument 读取 XML 文件并将元素的本地名称写为字符串。
对于输出,我使用 SiemensNX 的列表窗口,但每个其他输出窗口或 txt 文件都适用。
这是输入 XML:
<?xml version="1.0" encoding="utf-8"?>
<Rootlvl>
<Lvl_1>
<Lvl_2/>
</Lvl_1>
</Rootlvl>
这是 C# 代码:
using System.Xml.Linq;
using NXOpen;
namespace XmlElementName
{
class Program
{
private static ListingWindow lw = s.ListingWindow;
public static void Main()
{
string XmlFilePath = @"C:\Users\XXX\Desktop\TestXML.xml"; //XML path
string testnode = "Lvl_2"; //local name of a optional XML element
lw.Open(); //open NX listinwindow for output
//=============LoadXmlFile================
//get main Input
XDocument xml = XDocument.Load(XmlFilePath); //load XmlFile
//====================WriteOutElementName====================
XElement node;
if (testnode == null) //if no optional Element name --> take root element of XML
{
node = xml.Root;
}
else
{
// Find node to passed string "testnode" --> here "Lvl_2"
node = xml.Element(testnode);
}
lw.WriteLine("Test"); //Test if output works --> !yes it works
if(node != null)
{
string output = node.Name.LocalName;
//local name of XElement-variable "node" to string
lw.WriteLine(output); //output the local name of variable "node"
}
else
{
lw.WriteLine("Element with Name = " + testnode + "not found")
}
}
}
}
如果变量 testnode = "Lvl_2" 的输出应该是:
Test
Lvl_2
如果变量 testnode = null 的输出应该是:
Test
Rootlvl
VS 调试器告诉我
node = xml.Element(testnode); //testnode = Lvl_2
在 XML 中找不到名为“Lvl_2”的元素。所以它将“node”设置为“Null”并抛出以下异常:
“System.NullReferenceException:对象引用未设置为对象的实例。”
但我知道“Lvl_2”是 XML 的一个子元素。我该怎么做才能在 XML 中找到这个元素“Lvl_2”?
我应该在这一行改变什么
node = xml.Element(testnode)
按名称查找元素?
谢谢你们的帮助。
解决方案
如果您放置了 xml 中不存在的 testnode,则 node 为 null 并导致异常,请在打印前进行检查
if (node!=null){
string output = node.Name.LocalName;
//local name of XElement-variable "node" to string
lw.WriteLine(output); //output the local name of variable "node"
}
推荐阅读
- c# - 绑定组合框 MVVM
- c++ - 在 C++ 中将无符号整数转换为八进制表示形式的最佳方法是什么,反之亦然?
- java - aws lambda 找不到 Gson 类
- three.js - 试图在 THREE.js 上加载 fbx 得到 ReferenceError: "url is not defined"
- android - Android Studio 设计选项卡未显示整个应用程序
- machine-learning - keras 在训练期间更改参数
- javascript - 用其他 div jQuery 替换 div 数据
- java - 在嵌入Java的neo4j中加载csv文件
- python - 客户端 - 使用 python 进行服务器套接字编程
- android - Java 编译器错误:链接文件资源失败