我正在使用org.w3c.dom.Element将元素添加到xml文件中.这里的问题是在设置属性时根据字母顺序而不是添加顺序.如何忽略这种行为?
谢谢.
我有一个XML文件(web.config),我需要编辑每个标签的value属性,取决于键名...
这是XML文件的一个示例:
<appSettings>
<add key="A1" value="Hi" />
<add key="B1" value="Hello" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我的意思是,如何使用键属性(A1和B1)更改值"hi"和"hello"?
非常感谢
在我的C#代码库中,我有一个XMLDocument表单:
<A>
<B>
<C mlns='blabla' yz='blablaaa'> Hi </C>
<D mlns='blabla' yz='blablaaa'> How </D>
<E mlns='blabla' yz='blablaaa'> Are </E>
<F mlns='blabla' yz='blablaaa'> You </F>
</B>
<B>
<C mlns='blabla' yz='blablaaa'> I </C>
<D mlns='blabla' yz='blablaaa'> am</D>
<E mlns='blabla' yz='blablaaa'> fine</E>
<F mlns='blabla' yz='blablaaa'> thanks</F>
</B>
</A>
Run Code Online (Sandbox Code Playgroud)
使用Linq-to-XML或其他方法,我想删除元素包含的所有元素的mlns和yz属性B.
实现它的最佳方法是什么?
我在查询XMLDocument使用SelectNodes().但是,我需要根据查询节点中包含的元素,以特定顺序返回查询.我认为没有办法用SelectNodes方法做到这一点.如何实现这一目标?
这是我的查询:
XmlNodeList booksNodes = xmlDoc.DocumentElement.SelectNodes("//BOOKS");
Run Code Online (Sandbox Code Playgroud)
我想通过发布日期来订购,发布日期是<BOOKS>节点内包含的元素.
XMLDocument类似乎是支持IDisposable的理想候选者,因为......
这将允许您在Using {...}语句中使用它,并在使用后立即进行垃圾收集.
但它似乎不支持它.
在那种情况下,处理它的最佳方式是什么?
或者它不需要支持IDisposable - 我想你可以在完成它之后将其引用设置为null?
或者它的关键区别在于它不会占用外部资源,例如数据库连接或外部文件,因此不需要IDispoable"支持"?
我想将一个子节点添加到XmlDocument中的元素.对于我的生活,我似乎无法找到一种方法来存在具有已知值的属性而不知道元素名称的所有元素.
但是我无法让xpath工作.
doc.SelectNodes(/XXXXXX[@Name='the_value_I_want'])
Run Code Online (Sandbox Code Playgroud)
请问XXXX的内容是什么?
如果它更容易,我很乐意切换这个功能Linq2Xml.
我有一个例程解析来自HTTP请求的XML响应,我使用XmlDocument.LoadXml来帮助完成此操作.我依靠这个方法在错误的XML上抛出异常并在成功时返回一个已加载的XmlDocument对象.
我没想到的是它挂起几分钟加载文件.当我在测试环境中运行此代码时,它会在100%的时间内挂起几分钟.貌似.NET中的一些bug给我...
Dim tstring As String = ""
tstring &= "" & vbCrLf
tstring &= "" & vbCrLf
tstring &= "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">" & vbCrLf
tstring &= "" & vbCrLf
tstring &= "<html> xmlns=""http://www.w3.org/1999/xhtml"" >" & vbCrLf
tstring &= "<head><title>" & vbCrLf
tstring &= " Error" & vbCrLf
tstring &= "</title></head>" & vbCrLf
tstring &= "<body>" & vbCrLf
tstring &= "</body>" & vbCrLf
tstring &= "</html>" & vbCrLf
Dim MyXmlDoc As New XmlDocument
MyXmlDoc.LoadXml(tstring)
Run Code Online (Sandbox Code Playgroud)
文档中可以删除以防止其挂起的特定行是: …
我有一个xml文件,我需要修改并将其写回输出文件.问题是结果outputfile在根声明中包含一个额外的属性"standalone",它在原始输入文件中不存在.有什么办法可以阻止XmlDocument添加这个属性吗?
我试过的代码:
//read input xml
XmlDocument xDoc = new XmlDocument();
xDoc.Load(originalFile);
//do some stuff
//....
//write back to output
using(XmlTextWriter xml2 = new XmlTextWriter(outputFile, Encoding.UTF8) { Formatting = Formatting.Indented })
{
xDoc.CreateXmlDeclaration("1.0", null, "");
xDoc.Save(xml2);
}
Run Code Online (Sandbox Code Playgroud)
inputfile包含这个:
<?xml version="1.0" encoding="UTF-8" ?>
...
Run Code Online (Sandbox Code Playgroud)
output.xml包含:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
...
Run Code Online (Sandbox Code Playgroud) 我有一个xml文件,当前正在获取按标签名称的元素。我试图实现的是指定要使用的块,例如书店或商店。感谢您的帮助和建议。
XML:
<VariablesSpecs name="Data01">
<bookstore>
<book genre='novel' ISBN='10-861003-324'>
<title>The Handmaid's Tale</title>
<price>19.95</price>
</book>
</bookstore>
<shop>
<book genre='novel' ISBN='10-861003-324'>
<title>The Handmaid's Tale</title>
<price>19.95</price>
</book>
</shop>
</VariablesSpecs>
Run Code Online (Sandbox Code Playgroud)
码:
var doc = new XmlDocument();
doc.Load("data.xml");
var bookNodes = doc.GetElementsByTagName("book");
foreach (var bookNode in bookNodes)
{
// Collect data.
}
Run Code Online (Sandbox Code Playgroud) 我在C#中有一个简单的客户端和服务器.目标是客户端将XML文档发送到服务器,然后服务器应该使用不同的XML文档进行响应.当我尝试接收与XMLDocument.load方法(的NetworkStream)输入/请求XML服务器阻塞.
服务器:
TcpListener t = new TcpListener(IPAddress.Any, 4444);
t.Start();
TcpClient c = t.AcceptTcpClient();
NetworkStream s = c.GetStream();
XmlDocument req = new XmlDocument();
req.Load(s);
string respString = "<response><data>17</data></response>";
XmlDocument resp = new XmlDocument();
resp.LoadXml(respString);
resp.Save(s);
Run Code Online (Sandbox Code Playgroud)
客户:
TcpClient t = new TcpClient("localhost", 4444);
NetworkStream s = t.GetStream();
string reqStr = "<request><parameters><param>7</param><param>15</param></parameters></request>";
XmlDocument req = new XmlDocument();
req.LoadXml(reqStr);
req.Save(s);
XmlDocument resp = new XmlDocument();
resp.Load(s);
Console.WriteLine(resp.OuterXml);
Run Code Online (Sandbox Code Playgroud)
在将请求XmlDocument保存到流中之后,我尝试在客户端中添加Flush(),但这似乎没有帮助.最初我试过让服务器读取从客户端到MemoryStream的所有输入,但后来我发现无法向服务器表明所有输入都是在没有断开连接的情况下完成的,这意味着客户端无法阅读其输入.
我可以使用netcat从文件中将XML输入发送到服务器,一切正常.无论我在服务器中使用XmlDocument.Load(NetworkStream),还是将所有输入读入MemoryStream,这都有效.netcat在这种情况下做的是什么,我没有在我的C#客户端做什么,我怎么用C#做呢?我应该采用不同的方式吗?
xmldocument ×10
xml ×8
c# ×6
.net ×3
linq-to-xml ×2
c#-4.0 ×1
dom ×1
file ×1
idisposable ×1
java ×1
linq ×1
networking ×1
using ×1
vb.net ×1
xattribute ×1
xpath ×1